如何使用反射来判断一个类是否为final

13
假设我有一个类: < p > < code >public final class Foo 以及一个反射的< code >Class clz 引用,指向该类。
如何使用< code >clz判断< code >Foo是否为< code >final?
答案:使用Modifier.isFinal(clz.getModifiers())
3个回答

24

使用Class#getModifiers方法:

Modifier.isFinal(clz.getModifiers())

在反射 API 中,类(或字段、方法)的修饰符被表示为打包位的 int 值。每个可能的修饰符都有自己的位掩码,Modifier 类有助于屏蔽出这些位。

以下是您可以检查的修改符:

  • abstract 抽象的
  • final 最终的
  • interface 接口
  • native 本地的
  • private 私有
  • protected 受保护的
  • public 公共的
  • static 静态的
  • strictfp 严格的浮点数运算
  • synchronized 同步的
  • transient 瞬时的
  • volatile 易失性的

5
Modifier.isFinal(clz.getModifiers())

2
你可以使用Class.getModifiers(),最好使用Modifier类来解释返回值,以便更易读懂。请保留HTML标签。
if (Modifier.isFinal(clz.getModifiers())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接