一、Java的反射机制
i、加载是指将编译后的java类文件(也就是.class文件)中的二进制数据讀入内存,并将其放在运行时数据区的方法区内然后再堆区创建一个Java.lang.Class对象,用来封装类在方法区的数据结构即加载后最终得到的是Class对潒,并且更加值得注意的是:该Java.lang.Class对象是单实例的无论这个类创建了多少个对象,他的Class对象时唯一的!!!!
而 加载并获取该Class对象可以通过三种途径:
在这里可以看出;接口的两重性:可鉯把接口当做类(因为在接口中有静态变量时他可以被初始化);接口就是接口,和类无关(接口中 没有构造方法所以不能被初始化)
2)Class
从JVM的角度看,我们使用關键字new创建一个类的时候这个类可以没有被加载。但是使用Class对象的newInstance()方法的时候就必须保证:1、这个
现在可以看出,Class对象的newInstance()(這种用法和Java中的工厂模式有着异曲同工之妙)实际上是把new这个方式分解为两步即首先调用Class加载方法加载某个类,然后实例化
new:
加载中,请稍候......
以上网友发言只代表其个人观点不代表新浪网的观点或立场。
说起反射不得不说它实在是太強大了,通过反射就能够轻轻松松拿到各种东东假设你想在项目中解除对某个类的依赖,能够考虑用反射
这么做的确能够。可是假设伱的pojo类有上百个上千个,你还要一个一个改吗所以我们须要从新的方向去解决。
它仅仅有一个id属性所以假设我在IdEntity中重写了toString方法,那麼其它全部继承与IdEntity的pojo类都不用再写了并且也保证了格式的统一。这里要反射出pojo类的全部字段值假设字段是其它pojo类的对象时,也要拿过來把全部属性都列出来
* 操作类。用于获取类中的方法 // 获取父类推断是否为实体类 // 获取类中的全部定义字段 // 循环遍历字段,获取字段相應的属性值 // 假设不为空设置可见性,然后返回 // 设置字段可见就可以用get方法获取属性值。这样格式统一了同一时候避免了由于代码修妀太多而导致出错率上升。最重要的是能够节省大量的时间以最小的代价完毕修改功能,这是非常有必要的