返回
沈阳市和平区爱尚职业
置顶
招生热线:400-800-2178

学校地址:沈阳市中山路349号

浅谈java的反射

80 2018-06-27 09:09:08

学习笔记


一个类或者对象通过反射可以获得自身的对象,该对象是一个java.lang.Class 的对象(就像一个镜像文件)。


一个对象或者类获得自身的Class对象的过程称为反射。有三种方法可以获得自身的Class对象引用(对每一个被装载的类型(类或接口),虚拟机都会为它创建一个java.lang.Class的实例):


1) Class c = Class.forName(“com.briup.ch06.Student”);//虚拟机中没有该类的Class的实例对象


2) Class c = stu.getClass() //虚拟机已经存在Class的实例对象


Class c = this.getClass();//虚拟机已经存在Class的实例对象


3) Class c = Student.class; //通过类名.class


注意:类和它所创建的所有对象通过反射获得的Class对象都是同一个,在这个例子中是com.briup.ch06.Student


反射可以让我们利用这个Class对象来获取和修改私有的变量和方法,不通过共有的方法去获得,可以破坏数据的封装性。


反射:


1) 确定一个对象的class,镜像也是一个对象,属于java.lang.Class


2) 可以获得一个类的修饰符、字段、方法、构造器和父类。


3) 获得接口声明的常量和方法。


4) 创建Class的实例,直到运行时才获得。


5) 运行前即使字段名字不知道,可以到程序运行时获得和修改这些字段的值。


6) 运行前即使对象的方法名不知道,可以到程序运行时触发调用该方法。


7) 运行前创建了一个大小和元素都未知的新数组,可以到运行时修改数组的元素。


反射的重要方法调用


Class.forName(String className)


通过全类目获取镜像对象


newInstance()


调用类中的无参构造器,创建实例


getField(String name)


获取类中当前可见的属性


getDeclaredField(String name)


获取类中声明的所有的属性


getMethod(String name,Class... para)


获取类中当前可见的方法


getDeclaredMethod(String name,Class... para)


获取类中声明的所有的方法


getConstructor(Class... para)


获取类中声明的可见构造方法


getDeclaredConstructor(Class... para)


获取类中声明的任何构造方法


java.lang.reflect.Field


get(Object obj)


set(Object obj,Object value)


java.lang.reflect.Method


invoke(Object obj,Object... value)


java.lang.reflect.Constructor


newInstance(Object... value)


反射优缺点:


反射机制通过在运行时探查字段和方法,从而可以帮助写出通用性很好的程序,这项能力对系统编程来说特别有用,但它并不适合于应用编程。而且,反射是脆弱的——编译不能帮助你发现编译错误,任何错误在运行时被发现并且都会导致异常。


文中图片素材来源网络,如有侵权请联系删除
来源:沈阳市和平区爱尚职业培训机构

免费提供问答解答,帮您轻松解决难题

热门课程 全部课程

热门动态

申请免费试听

只要一个电话

我们为您免费回电

立即申请
刷新
图形验证
关闭
>>
拖动左边滑块完成上方拼图