51 votes

Quelle est la meilleure façon de vérifier si un champ est final en java à l'aide de la réflexion?

Je suis en train d'écrire une classe qui, à un certain point, est d'avoir tous ses champs attribué à partir d'un autre élément de cette classe.

Je l'ai fait par le biais de la réflexion:

        for(Field f:pg.getClass().getDeclaredFields()){
            f.set(this, f.get(pg));
        }

Le problème, c'est que cette classe contient un champ, qui est définitive. Je ne pouvais l'ignorer par son nom, mais pour moi qui ne semble pas élégant du tout.

Quelle est la meilleure façon de vérifier si un champ est final en java à l'aide de la réflexion?

115voto

AlexR Points 60796

Le meilleur et le seul moyen est de: Modifier.isFinal(f.getModifiers())

Référence:

8voto

Aleks G Points 25412

Vous pouvez utiliser getModifiers() méthode sur l' Field variable:

if((f.getModifiers() & java.lang.reflect.Modifier.FINAL) == java.lang.reflect.Modifier.FINAL)
{
    //this is final field
}

3voto

Jayendra Points 27472

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X