我正在编写一个类,在某个时刻需要将其所有的Field
从该类的另一个项目中分配。
我通过反射来完成它:
for (Field f:pg.getClass().getDeclaredFields()) {
f.set(this, f.get(pg));
}
问题在于这个类包含一个 final
的 Field
。我可以通过名称跳过它,但对我来说这似乎不够优雅。
使用反射,在Java中检查一个 Field
是否为 final
的最佳方法是什么?
我正在编写一个类,在某个时刻需要将其所有的Field
从该类的另一个项目中分配。
我通过反射来完成它:
for (Field f:pg.getClass().getDeclaredFields()) {
f.set(this, f.get(pg));
}
问题在于这个类包含一个 final
的 Field
。我可以通过名称跳过它,但对我来说这似乎不够优雅。
使用反射,在Java中检查一个 Field
是否为 final
的最佳方法是什么?
Field
变量上使用getModifiers()
方法:if ((f.getModifiers() & Modifier.FINAL) == Modifier.FINAL)
{
//this is final field
}
getModifiers
返回一个位掩码,每个设置的位表示一个特定的修饰符。为了检查某个特定的修饰符,你需要检查是否已经设置了该特定的位——因此需要使用按位与运算。 - Aleks G