如果一个类是最终的,我如何告诉使用反射

时间:2014-04-25 10:48:35

标签: java reflection

假设我有一个班级:

public final class Foo

以及引用该类的反映Class clz引用。

如何判断(使用clzFoofinal

3 个答案:

答案 0 :(得分:18)

使用Class#getModifiers

Modifier.isFinal(clz.getModifiers())

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

您可以检查以下修改器:

  • abstract
  • final
  • interface
  • native
  • private
  • protected
  • public
  • static
  • strictfp
  • synchronized
  • transient
  • volatile

答案 1 :(得分:5)

Modifier.isFinal(clz.getModifiers())

答案 2 :(得分:2)

您使用Class.getModifiers(),理想情况下使用Modifier类以可读方式解释返回值:

if (Modifier.isFinal(clz.getModifiers())