浅谈JAVA中反射(附代码小示例)
经常听一些老程序员说 反射很高深多神秘等等。今天就来稍微讲一下其实反射也不是那么高深莫测。主要是工作时间短的可能不会涉及到相关的开发所以对这个了解比较少。举一个通俗的例子吧反射的意思就是我知道了一个人的名字就知道这个人的身高、性别、体重、三围等等信息。这就是反射通过名字获取这个类的全部属性和方法。
1.什么是反射
JAVA反射机制是在运行状态中对于任意一个类都能够知道这个类的所有属性和方法对于任意一个对象都能够调用它的任意一个方法和属性这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2.怎么用反射
1.获取字节码文件.class文件,得到Class对象
三种方式Class c=
1.Object.getClass方法
2.Object.class
3.Class.forName(“含有包名的类名”);
Class
Constructor
Field
Method
2.分别得到Constructor(构造方法的类)Field成员变量Method成员方法的对象
Constructor
con=c.getDeclaredConstructor(class类型);
Field field
=c.getDeclaredField(“成员变量的名称”);
Method method
=c.getMethod(String name,参数class类型);
3.使用这些对象的方法获得构造方法成员变量成员方法。
Object o= con.newInstance(参数);
field.setAccessible(true);
field.set(o, 新参数);
m1.invoke(o,可变参数);
4.反射的好处
其实我们经常用到的就是做泛型类、接口的时候使用。下面举一个简单的例子通过反射把数据库中的数据自动加载到指定的类的属性中。
说明一下上述的方法的作用是返回数据库中集合List只要最终查询的的结果字段和接收的类相匹配就可以把结果存储到List集合对象中。例如select namepassword form user得到了namepassword的一个list数据User只要包含namepassword这两个属性和相应的getset方法通过上图方法就可以自动装配到List<User>中。
- 点赞
- 收藏
- 关注作者
评论(0)