反射(缺点:破坏了java的封装性)

例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    如果有返回值,那么返回什么值就是什么

获取类中私有的方法:


获取类中所有的公共方法,包括继承的:


获取类中所有的方法包括私有的,但不包括继承的















作业:写一个榨汁机类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容