JAVA反射(2) - Field成员变量 学习笔记

本文详细介绍了Java反射中Field类的使用方法,包括如何通过不同方式获取类的属性信息,以及Field类提供的各种实用方法,如获取属性类型、名称、值等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。其实这两个方法是对编译生成的才有效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值