关于java反射的个人理解

来源:互联网 发布:淘宝直播小二 编辑:程序博客网 时间:2024/06/09 01:48

突然听到反射这个词,硬是想不起来什么概念,所以上网查了一下,决定写一篇文章加深印象
百度上说JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
然后我就突然想起来了。
java的反射是通过获取类中的字节码对象。也就是Class。通过Class能够获取类的对象。当然也就能获取对象的属性和方法啦。这种东西能干什么?我还是个菜鸟,只知道可以在运行时动态地加载配置文件(因为配置文件经常变化)
查一下文档,有关的类有java.lang.Class和java.lang.reflect
接下来就是操作了,首先是获取Class。有三种方式

第一种String str=new String();Class cstr=str.class;第二种String str =new String();Class cstr=str.getClass();第三种String str =new String();Class cstr=Class.forName;

然后用Class可以生成对象,用newInstance()方法

//创建实例Object o =cstr.newInstance();

第二个是获取对象的方式是通过构造器
相关的类是java.lang.reflect.constructor.

//获取String所对应的Class对象Class  c = String.class;//获取String类带一个String参数的构造器Constructor constructor = c.getConstructor(String.class);//根据构造器创建实例(带着23333字符串参数)Object obj = constructor.newInstance("23333");

写到这里我已经可以去吃饭了。
获取实例的属性和方法应该在类java.lang.reflect里面
查了一下文档,相关的类有
java.lang.reflect.Field; (可以获取属性)
java.lang.reflect.Method; (可以获取方法)

原创粉丝点击