java反射相关基础2019-10-10

// java8 stream API Arrays.stream(T[] array)    返回以指定数组作为源的顺序
// isAssignableFrom()    native方法,确定Class对象是否相同
Field field = Arrays.stream(clazz.getDeclaredFields()).filter(e -> String.class.isAssignableFrom(e.getType()).findFirst().orElse(null);

内省 introspector
JDK中提供了一套API用来访问某个属性的getter和setter方法,这就是内省
ClassDemo classDemo = new ClassDemo(11, "张三");
BeanInfo beanInfo = Introspector.getBeanInfo(ClassDemo.class);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
    System.out.println(propertyDescriptor.getName());
    Method readMethod = propertyDescriptor.getReadMethod();
    Object object = readMethod.invoke(classDemo);
    System.out.println(object);
}

Method invoke(Object obj, Object... args) 在具有指定参数的指定对象上调用此方法对象表示的基础方法


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

推荐阅读更多精彩内容