Java中不明白的小知识中不明白的小知识–反射反射
Java文件和文件和.class文件的关系文件的关系
Java文件里面包含代码的所有内容:类、接口、成员变量、成员方法 ==>
.class字节码问题:.Java文件通过Javac编译工具生成对应的.class字节码文件,使用JDK中提供的反编译工具,可以看
到.class文件中包含class完整的包名.类名。
Filed成员变量,成员变量的名字和成员变量的数据类型[如果是引用数据类型,也是完整的包名.类名]
Method成员方法,方法权限修饰符,返回值类型,类名,形式参数列表
总结
.class字节码文件中,包含了Java文件的所有内容。
程序加载过程和程序加载过程和.class文件的关系文件的关系
再Java文件的运行过程中,当前程序需要哪一个类参与代码执行,那么就需要加载这个类的.class字节码文件,该.class字节
码文件时在程序的加载阶段,存在于内存的[代码区]
.class字节码文件加载到内存中的[代码区],.class文件中包含对应Java程序的所有内容,即在代码区中存在一块空间,有一
个.class文件,这个文件包含Java程序的所有内容
Java中的万物皆对象中的万物皆对象
Java代码中,把在内存代码区保存的.class字节码内存空间,看作是一个对象,而该对象中包含了对应Java文件的所有内容
反射使用的必会方法反射使用的必会方法[重点重点]
class涉及到的方法:
Class.forName(String packageNameAndClassName);返回值类型是class
Class类的静态成员方法,通过完整的包名,类名获取对应的.class文件的Class对象,同时也可以作为.class文件加载的方
式。
类名.class 返回值类型class
通过类名.class方法,获取对应的class类对象,通常用于方法的参数类型
类对象,getClass();
通过类对象获取对应的.class的Class类对象、方法参数或者说数据类型判断。
Constructor构造方法类涉及到的方法
getConstructors(); 返回值类型是一个Constructor[]数组
获取当前Class类对象对应Java文件中所有public修饰的构造方法的类对象数组
getDeclaredConstructors(); 暴力反射
获取当前Class类对象对应Java文件中,所有【构造方法的类对象数组】,包括私有化构造方法
public Constructor getConstructor(Class… initArgumentTypes);
根据指定过的数据类型,来选择对应的构造方法,这里可能会抛出异常;有且只能获取类内的指定数据类型非私有化构造方法
类对象
异常:NoSuchMethodException
Class:约束数据雷系,当前方法所需的参数类型
eg:需要int类型 int.class ; String类型 String.class
评论0
最新资源