JAVA反射(2)

来源:互联网 发布:动态图修改软件 编辑:程序博客网 时间:2024/06/05 17:10

0.Field说明
用来描述类的属性信息

  1. Class类怎么获取Field
    1) getFields() 获取类中所有public类型的属性
    2) getFields(String name) 获取类特定的方法,name参数指定类属性的名称
    3) getDeclaredFields() 获取类中所有的属性,但不包含继承的属性
    4) getDeclaredFields(String name) 获取类特定的方法,name参数指定类属性的名称

2.Field中常用方法
1) getType() 获取属性声明是的类型对象(Class对象)
2) getGenericType() 返回属性声明的类型
3) getName() 获取属性名称
4) getAnnotations() 获取属性的注解列表
5) getModifies() 获取属性的修饰符
6) isEnumConstant() 属性是否为枚举对象
7) isSynthetic() 属性是否为复合类
复合类:任何被编译器引入的构造器在源代码中没有一个相应的构造器 那么该段代码就必须要被标记为synthetic的(复合的) 除了默认的构造器和类初始化方法.
8) get(Object obj) 获取obj的该属性的值
9) set(Object obj,Object value) 设置obj的该属性的值

Tip:
a.getType和getGenericType区别:
*首先是返回的类型不一样,一个是Class对象一个是Type接口
* 如果属性是一个泛型,从getType()只能得到这个属性的接口类型。但从getGenericType()还能得到这个泛型的参数类型。
b. isEnumConstant()和isSynthetic() :
* 对象中如果有属性是枚举类或复合类,用这两个方法返回的值并不是我们想象的true而是false。其实这两个方法是对编译生成的才有效

原创粉丝点击