例1:此程序加载了三个字节码文件 Recfl Scanner String
一个字节码文件对应一个字节码对象(镜像)
但是一个字节码文件可以产生多个对象。
正射:先加载字节码文件,得到类名
反射:Class.forName()加载字节码文件到内存,得到字节码对象,
class.newInstance()字节码对象去调用类里面的无参的构造方法,通过字节码对象调用的只能是无参的构造方法
例:
得到镜像的三种方式:并且得到的镜像是相等的,因为一个字节码文件对应一个字节码对象 通过镜像可以得到一个类中所有的东西,包括私有的。
①:Class.forName("全类名");
②:类名.class;
③:对象.getClass();
基本数据类型有镜像,且只有一种方式获得镜像类名.class;
例:Class clazz = int.class;
String类型获取镜像举例 对象.getClass();
举例:clazz3和clazz4是同一个镜像
获取多个参数的构造器并且调用: 这种方式只能得到共有的,而不能得到私有的。
获取私有的构造器并且调用:
获取所有的构造器包括私有的:
得到类中单个非私有的属性并且赋值
得到类中单个非私有属性并且赋值和获取值:
得到类中单个私有属性并且赋值和获取值:
通过反射去将调用类中的方法:
通过反射去调用setName方法并且通过反射调用getName将值得到:(必须要背会,不会就是猪)
如果方法没有返回值那么这个方法(invoke)所返回的结果就是null 如果有返回值,那么返回什么值就是什么
获取类中私有的方法:
获取类中所有的公共方法,包括继承的:
获取类中所有的方法包括私有的,但不包括继承的
作业:写一个榨汁机类