使用反射检查java中的字段是否为final

Ars*_*ray 43 java

我正在写一个课程,在某些时候,必须Field从该课程的另一个项目中分配所有课程.

我通过反思做到了:

for (Field f:pg.getClass().getDeclaredFields()) {
    f.set(this, f.get(pg));
}
Run Code Online (Sandbox Code Playgroud)

问题是,这个类包含一个Field,即final.我可以跳过它的名字,但对我来说似乎并不优雅.

检查a Field是否final在使用反射的java中的最佳方法是什么?

Ale*_*exR 93

最好也是唯一一种方法是: Modifier.isFinal(f.getModifiers())

参考:


Ale*_*s G 8

您可以getModifiers()Field变量使用方法:

if ((f.getModifiers() & Modifier.FINAL) == Modifier.FINAL)
{
    //this is final field
}
Run Code Online (Sandbox Code Playgroud)