内部类

class A {

//Inner1 要在 A 初始化后 才能使用,即要被A的对象所调用

class Inner1 {

int k = 0;

// static int j = 0; //A加载后,Inner1没有加载,所以这个 静态变量j 无法立即使用,报错

final int z = 0;

/*static void say1() {

}*/

void say2() {

}

}

//Inner2 在A加载好后就可以使用了

static class Inner2 {

int k = 0;

static int j = 0;

final int z = 0;

static void say1() {

}

void say2() {

}

}

// 调用内部类

void c() {

final int x = 0;// final 修饰后,可以由局部内部类调用

new A().new Inner1();// 非静态内部类Inner1,需要它所属的类的对象调用

new A().new Inner1().say2();

A.Inner2.say1();

new A.Inner2().say2();// 非静态方法say2(),需要它所属的类的对象调用

class Inner3 {

void print() {

System.out.println(x);

}

}

/*

* 方法中的局部内部类的调用,需要在声明后 因为,

* 在方法里的执行顺序是 从上往下,而这个类

* 就相当于一个 局部 变量 当然 要先声明,再使用

*/

new Inner3().print();

}

}

类的加载器 java.lang.ClassLoaderjava.lang.ClassLoader 类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即java.lang.Class 类的一个实例。除此之外,ClassLoader 还负责加载 Java 应用所需的资源,如图像文件和配置文件等。不过本文只讨论其加载类的功能。为了完成加载类的这个职责,ClassLoader 提供了一系列的方法:

getParent() 返回该类加载器的父类加载器。

loadClass(String name) 加载名称为 name 的类,返回的结果是 java.lang.Class 类的实例。

findClass(String name) 查找名称为 name 的类,返回的结果是 java.lang.Class 类的实例。

findLoadedClass(String name) 查找名称为 name 的已经被加载过的类,返回的结果是 java.lang.Class 类的实例。

defineClass(String name, byte[] b, int off, int len) 把字节数组 b 中的内容转换成 Java 类,返回的结果是 java.lang.Class 类的实例。这个方法被声明为final 的。

resolveClass(Class> c) 链接指定的 Java 类。

public class ClassLoaderTest extends ClassLoader {

public static void main(String[] args) throws SecurityException, NoSuchMethodException {

// 根类加载器,加载的核心类库

URL[] urls = sun.misc.Launcher.getBootstrapClassPath().getURLs();

for (URL u : urls) {

System.out.println(u);

}

// 扩展类 加载器,,加载的系统属性:java.ext.dirs 返回的路径下的 class

System.err.println("扩展类(extention classLoader)加载器"

+ ClassLoader.getSystemClassLoader().getParent());//非继承关系,只是意义上

System.out.println(System.getProperty("java.ext.dirs"));

// 应用(系统 application classLoader)类加载器,, 加载系统环境变量 PATH 或 CLASSPATH

// 指定的JAR包和类路径

System.err.println("应用(系统)类加载器" + ClassLoader.getSystemClassLoader());

// System.out.println(System.getenv("PATH"));

// System.out.println(System.getenv("CLASSPATH"));

}

}

java 内部类 加载_举例讲解Java的内部类与类的加载器相关推荐

  1. java 流的概念_举例讲解Java中的Stream流概念

    1.基本的输入流和输出流 流是 Java 中最重要的基本概念之一.文件读写.网络收发.进程通信,几乎所有需要输入输出的地方,都要用到流. 流是做什么用的呢?就是做输入输出用的.为什么输入输出要用&qu ...

  2. java自旋锁使用_实例讲解Java 自旋锁

    一直以来不是怎么清楚自旋锁,最近有点时间,好好的学习了一下: 所谓的自旋锁在我的理解就是多个线程在尝试获取锁的时候,其中一个线程获取锁之后,其他的线程都处在一直尝试获取锁的状态,不会阻塞!!!那么什么 ...

  3. java pdf添加图章_实例讲解Java处理PDF图章的方法

    图章(印章)是一种在合同.票据.公文等文件中表明法律效应.部门机关权威的重要指示物,常见于各种格式的文件.文档中.对于纸质文档可以手动盖章,但对于电子文档,则需要通过特定的方法来实现.本篇文档分享通过 ...

  4. java 动态调用函数_深入讲解Java语言中的函数动态调用方式

    相 信 有 不 少 人 使 用C 语 言 的 函 数 指 针 实 现 过 函 数 的 动 态 调 用. 适 当 地 运 用 函 数 动 态 调 用 功 能 不 仅 能 减 少 代 码 数 量, 而 且 ...

  5. java 自定义语言 解析_视频讲解 Java 语言基础编程题(自定义异常类,IO 流)

    第一题>点击这里查看学生信息管理系统的视频讲解知乎视频​www.zhihu.com 基于学生信息管理系统增加以下两个功能:自定义学号异常类和年龄异常类,并在该成员变量不合理时产生异常对象并抛出. ...

  6. java类二次加载_深入理解java之类加载器

    一.类与类加载器 类加载器:实现加载阶段的第一步,通过一个类的全限定名来将这个类的二进制字节流加载进jvm. 类与类加载器:任意一个类唯一性都是由它本身和加载它的类加载器确定,两个类是否相等在它们是由 ...

  7. java rtti_举例讲解Java的RTTI运行时类型识别机制

    1.RTTI:运行时类型信息可以让你在程序运行时发现和使用类型信息. 在Java中运行时识别对象和类的信息有两种方式:传统的RTTI,以及反射.下面就来说下RTTI. RTTI:在运行时,识别一个对象 ...

  8. Java show两个整数加减_怎么样用java编写界面实现两个数的加法运算

    展开全部 import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; ...

  9. java date加月_如何在Java中向当前日期添加一个月?

    LocalDate::plusMonths 例: LocalDate.now( ) .plusMonths( 1 ); 最好指定时区. LocalDate.now( ZoneId.of( " ...

最新文章

  1. 大数据时代的数据挖掘
  2. Bootstrap按钮使用
  3. 解决不了“不可能三角”,火山抖音化只是个昏招
  4. C语言 2048小游戏
  5. android点击地址调用地图,Android 实现点击按钮 调用手机外部地图导航
  6. php中命名空间、面向对象、访问控制、接口
  7. docker初级操作
  8. 设备描述符请求失败_如果用户发出过多请求 苹果将取消Apple ID帐户恢复
  9. CCF201503试题
  10. ARX帮助文档:数据库对象
  11. OpenCV---膨胀与腐蚀
  12. 2021-06-17
  13. 防火墙之ipsec vpn实验
  14. Fer2013 数据集人脸表情识别 详细代码
  15. 一个普通211本科生找工作的那些事儿!
  16. 用户与组的创建、删除
  17. 最快最好用的数据增强库「albumentations」 一文看懂用法
  18. ui加Java岗位_本人不怕加班,java和ui学哪个好,打算以后往产品经理方向发展?...
  19. 经纬度度与度分格式转化
  20. Spring boot将项目的静态资源提取到项目外面的文件夹

热门文章

  1. hdu 1043 ,pku 1077 Eight ,八数码问题
  2. Win7新手系列教程:从安装到简单使用(新人必读)
  3. Postgres使用Copy命令将表导出成csv文件的遇到Permission Denied等错误
  4. SpringBoot基础系列-SpringCache使用
  5. QDU第一届程序设计大赛——E到I题解法(非官方题解)
  6. Android初学第34天
  7. php之判断点在多边形内的api
  8. 代码规范之华为公司代码规范
  9. Tsung MQTT协议简介及MQTT xml文档配置介绍
  10. 经验总结02-sql语句