您的位置:首页 > 职场人生

“好程序员笔记”反射与内省

2015-06-17 13:22 363 查看
android培训——我的java笔记,期待与您交流!

反射与内省
反射

JavaBean
内省

反射与内省

五个字除了“与”都不明白……

反射

什么是反射那?

在平时都是先写好一个类,然后再根据类来创建对象。

那么反过来,现有一个对象,根据对象来的到其类的信息就是反射。

Class类是一切的反射根源

得到Class类的三种方式

Object类中的getClass()方法

类.class

通过Class类的forName()方法

比如现在有一个Person类的对象person

Class personClass = person.getClass();//这样就得到了Person类的信息


Class personClass = Person.class; //这样也可以。


Class personClass = Class.forName("Person类的全称");//第三种方法


那怎么通过Class对象来创建person对象呢?

Person person = (Person)personClass.newInstance();


采用这种方式创建的是无参的对象,也就是无参构造方法创建的对象。

那怎么获取带参数的Person对象呢?

Constructor[] cs = personClass.getConstructors();//参数列表

Constructor c = personClass.getConstructor(String.class,int.class);
Person person = (Person)c.newInstance("alex",23);//这样参数就传递进来啦


还有好多方法,这里整理一下

返回值方法名作用
Method[]getMethods()返回公共方法对象的数组
FieldgetFields()返回公共属性的数组
Method[]getDeclaredMethods()返回类定义的方法,不包括父类方法
Field[]getDeclaredFields()返回定义的属性
得到Method或者Field对象就可以调用方法或者查看属性了,如果方法或者属性是private修饰的,就需要调用setAccessible(true)方法来强制调用。

写多了都是泪,完全不会用

JavaBean

JavaBean就是Java组件的意思,对于组件来说,关键在于有“能够被IDE构建工具侦测其属性和事件”的能力

一个JavaBean要具有这样的命名规则

要有getXxx(),setXxx()方法。

对于boolean类型可以把get替换成is

普通方法没有命名规则,不过必须是public。

符合以上规则的,就可以称为JavaBean。

内省

内省是Java语言对Bean类属性,事件的一种缺省处理方法。

这部分明显不懂了,留个记号
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  程序员 class