Je considère que l'exigence que les champs définitif trop restrictive et une erreur de saisie par le langage Java les concepteurs. Il y a des moments, par exemple, l'arbre de la manipulation, quand vous en avez besoin pour définir des constantes dans la mise en œuvre qui sont nécessaires pour effectuer des opérations sur un objet du type d'interface. La sélection d'un chemin de code sur la mise en œuvre de la classe est une bidouille. La solution que j'utilise est de définir une fonction d'interface et de mettre en œuvre, en retour d'un littéral:
public interface iMine {
String __ImplementationConstant();
...
}
public class AClass implements iMine {
public String __ImplementationConstant(){
return "AClass value for the Implementation Constant";
}
...
}
public class BClass implements iMine {
public String __ImplementationConstant(){
return "BClass value for the Implementation Constant";
}
...
}
Cependant, il serait plus simple, plus claire et moins sujettes à la aberrante de mise en œuvre pour utiliser cette syntaxe:
public interface iMine {
String __ImplementationConstant;
...
}
public class AClass implements iMine {
public static String __ImplementationConstant =
"AClass value for the Implementation Constant";
...
}
public class BClass implements iMine {
public static String __ImplementationConstant =
"BClass value for the Implementation Constant";
...
}