专业的JAVA编程教程与资源

网站首页 > java教程 正文

浅谈JAVA中反射(附代码小示例)(java反射详解)

temp10 2024-10-12 11:56:20 java教程 17 ℃ 0 评论

经常听一些老程序员说 反射很高深,多神秘等等。今天就来稍微讲一下,其实反射也不是那么高深莫测。主要是工作时间短的可能不会涉及到相关的开发,所以对这个了解比较少。举一个通俗的例子吧,反射的意思就是:我知道了一个人的名字,就知道这个人的身高、性别、体重、三围等等信息。这就是反射,通过名字获取这个类的全部属性和方法。

浅谈JAVA中反射(附代码小示例)(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 name,password form user得到了name,password的一个list数据,User只要包含name,password这两个属性和相应的getset方法,通过上图方法就可以自动装配到List<User>中。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表