“好程序员笔记”反射与内省
2015-06-17 13:22
417 查看
android培训——我的java笔记,期待与您交流!
反射与内省
反射
JavaBean
内省
在平时都是先写好一个类,然后再根据类来创建对象。
那么反过来,现有一个对象,根据对象来的到其类的信息就是反射。
Class类是一切的反射根源
得到Class类的三种方式
Object类中的getClass()方法
类.class
通过Class类的forName()方法
比如现在有一个Person类的对象person
那怎么通过Class对象来创建person对象呢?
采用这种方式创建的是无参的对象,也就是无参构造方法创建的对象。
那怎么获取带参数的Person对象呢?
还有好多方法,这里整理一下
得到Method或者Field对象就可以调用方法或者查看属性了,如果方法或者属性是private修饰的,就需要调用setAccessible(true)方法来强制调用。
写多了都是泪,完全不会用
一个JavaBean要具有这样的命名规则
要有getXxx(),setXxx()方法。
对于boolean类型可以把get替换成is
普通方法没有命名规则,不过必须是public。
符合以上规则的,就可以称为JavaBean。
这部分明显不懂了,留个记号
反射与内省
反射
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() | 返回公共方法对象的数组 |
Field | getFields() | 返回公共属性的数组 |
Method[] | getDeclaredMethods() | 返回类定义的方法,不包括父类方法 |
Field[] | getDeclaredFields() | 返回定义的属性 |
写多了都是泪,完全不会用
JavaBean
JavaBean就是Java组件的意思,对于组件来说,关键在于有“能够被IDE构建工具侦测其属性和事件”的能力一个JavaBean要具有这样的命名规则
要有getXxx(),setXxx()方法。
对于boolean类型可以把get替换成is
普通方法没有命名规则,不过必须是public。
符合以上规则的,就可以称为JavaBean。
内省
内省是Java语言对Bean类属性,事件的一种缺省处理方法。这部分明显不懂了,留个记号
相关文章推荐
- Android Native 绘图方法
- 开发人员、程序员与计算机科学家三者之间的区别
- 程序员必备,程序员四大忌
- 程序员们,做好你手里的俩份试卷
- 程序员必备的10大健康装备! 我们要工作更要健康!
- C#中struct和class的区别详解
- 一篇关于程序员性格的文章第1/3页
- VBS ArrayList Class vbs中的数组类
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- 8种类型极品程序员,不知你属于哪一种?
- 程序员编程从初级到中级的10个秘诀
- 做一个优秀程序员应该知道的15件事
- 程序员开发项目是选择效率还是质量呢?
- 程序员的八种境界,你在哪一境?
- 五个PHP程序员工具
- PHP 程序员应该使用的10个组件
- 深入了解PHP类Class的概念
- setAttribute 与 class冲突解决
- JavaScript中的类(Class)详细介绍
- javascript面向对象包装类Class封装类库剖析