// 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) 在具有指定参数的指定对象上调用此方法对象表示的基础方法
网友评论