Est “public static final” redondants pour une constante dans une interface Java?
Ce code:
interface Config {
int MAX_CONN = 20;
}
compilé et a travaillé comme je m'y attendais. Il ressemble à ce qui est la même chose que:
interface Config {
public static final int MAX_CONN = 20;
}
Est "public static final" redondants pour une constante dans une interface Java? Est-ce vrai pour Java 1.1, 1.2, 1.3, 1.4,..., 1.8 ou avez-vous changé dans une Java version?
Vous devez vous connecter pour publier un commentaire.
Les Variables déclarées dans l'Interface sont implicitement
public static final
. C'est ce que JLS 9.3 dit :Lire la JLS pour vous faire une idée pourquoi cela a été fait.
Regardez cette DONC réponse:
Interface
variables
sont implicitementstatic
etfinal
parce que les interfaces de Java ne peut pas être instancié sur leur propre.http://en.wikipedia.org/wiki/Interface_(Java)
Interface variables sont statiques car les interfaces de Java ne peut pas être instancié dans leur propre droit. La valeur de la variable doit être affecté dans un contexte statique, aucune instance existe. Le dernier modificateur de la garantie de la valeur assignée à l'interface de la variable est une véritable constante qui ne peut pas être affecté par le code de programme.
Interface variables sont toujours statique et définitive.
Si le
interface
doit être reconstruit pour une classe, il peut être plus pratique de conserver la redondantpublic static final
, cependant. (Cela semble bizarre, parce que chaque IDE drapeaux ceux que la redondance de l'information).MODIFIER Pour être juste: On ne pourrait pas le faire sans changer beaucoup d'autres endroits (comme les interfaces sont à l'aide de
implements
, tout en héritant de classes utilisentextends
)EDIT#2 En fait, la constante d'interface(s) peut être considéré comme un anti-modèle, veuillez voir sur wikipédia - Constant Interface