Java基础

一、反射&内省

1、反射

反射会有些许性能消耗,因为它把装载期做的事情搬到了运行期

2、JavaBean内省

内省机制是针对于JavaBean的,本质也是反射。

开发过程中遇到这样的问题:JavaBean对象往往具有多层继承关系,直接反射,调用cls.getFields()或者cls.getDeclaredFields()都不能获取到父类的private修饰字段。
cls.getFields() 获取的是全部公共字段,包括父类的
cls.getDeclaredFields() 获取的是子类的全部字段,但不包括父类的声明字段
这种场景以及需要获取setter和getter方法的场景都适合使用内省机制。

2.png

常用代码如下:

// JavaBean信息
BeanInfo beanInfo = Introspector.getBeanInfo(cls);
// 获取所有属性
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor pd : pds) {
     // 方法名
     String name = pd.getName();
     // setter方法
     Method writeMethod = pd.getWriteMethod();
     // getter方法
     Method readMethod = pd.getReadMethod();
}

也可以直接获取属性描述对象

// 直接获取属性描述对象
PropertyDescriptor pd = new PropertyDescriptor("name", cls);

其他方法不再赘述,可在实际开发中研究。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容