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

举报
小修 发表于 2018/08/21 13:10:48 2018/08/21
【摘要】 经常听一些老程序员说 反射很高深,多神秘等等。今天就来稍微讲一下,其实反射也不是那么高深莫测。主要是工作时间短的可能不会涉及到相关的开发,所以对这个了解比较少。举一个通俗的例子吧,反射的意思就是:我知道了一个人的名字,就知道这个人的身高、性别、体重、三围等等信息。这就是反射,通过名字获取这个类的全部属性和方法。1.什么是反射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.反射的好处

其实我们经常用到的就是做泛型类、接口的时候使用。下面举一个简单的例子通过反射把数据库中的数据自动加载到指定的类的属性中。

浅谈JAVA中反射附代码小示例

浅谈JAVA中反射附代码小示例

说明一下上述的方法的作用是返回数据库中集合List只要最终查询的的结果字段和接收的类相匹配就可以把结果存储到List集合对象中。例如select namepassword form user得到了namepassword的一个list数据User只要包含namepassword这两个属性和相应的getset方法通过上图方法就可以自动装配到List<User>中。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。