Check if a field is final in java using reflection
I'm writing a class, which at some point has to have all its Field
s assigned from another item of this class.
I did it through reflection:
for (Field f:pg.getClass().getDeclaredFields()) {
f.set(this, f.get(pg));
}
The problem is, that this class contains a Field
, which is final
. I could skip it by name, but to me that seems not elegant at all.
What's the best way to check if a Field
is final
in java using reflection?
Solution 1:
The best and only one way is: Modifier.isFinal(f.getModifiers())
Reference:
Field.getModifiers
Modifier.isFinal
Solution 2:
You can use getModifiers()
method on the Field
variable:
if ((f.getModifiers() & Modifier.FINAL) == Modifier.FINAL)
{
//this is final field
}