关于通过java反射机制,获取类属性的类型修饰符

反射机制是java的一个很大特点。通过反射机制,我们可以很方便的得到一个类的所有属性、所有方法、甚至是泛型类型。那么是不是也可以通过反射很方便地获取到各个属性的类型呢?比如说如下的实体(省略get,set方法)

@SuppressWarnings("unused")
public class EntityT {

	private static int private_static_int = 1;
	private final int private_final_int = 2;
	private static final int private_static_final_int = 1;
	private int private_common_int;

	protected static int protected_static_int = 1;
	protected final int protected_final_int = 2;
	protected static final int protected_static_final_int = 1;
	protected int protected_common_int;

	public static int public_static_int = 1;
	public final int public_final_int = 2;
	public static final int public_static_final_int = 1;
	public int public_common_int;

	public EntityT() {

	}
}
如果我想获得所有普通属性呢(即只有private、protected、public修饰的属性)?

一直纠结了半天,后来无意间看到了Field类的getModifers()方法和Modifier类,实际上这就足够了(很庆幸)

首先说说getModifiers(),引用java官方的说明就是:返回一个用数字表示的java修饰符,需要使用Modifier类来解码这个数字

什么意思呢,查看Modifier类的源码(帮助文档中也有)得知:

1  public
2  private
4  protected
16 final
8  static
也就是说【public int public_common_int;】这样一个属性,调用getModifers()之后返回的就是1,

【private static final int private_static_final_int = 1;】这个属性返回的就是26

通过调用Modifier.toString(field.getModiers())这样一个方法,就可以把数字转换成字符串表示 ,

【protected static int protected_static_int = 1;】就会输出 protected static

以上就是这次所有的内容,关于类Field和类Modifier的详细说明请参考java源码或java帮助文档。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值