Я вважаю вимогу, щоб поля були остаточними як надмірно обмежувальні та помилки з боку дизайнерів мови Java. Бувають випадки, наприклад, обробка дерева, коли вам потрібно встановити константи в реалізації, необхідні для виконання операцій над об'єктом типу інтерфейсу. Вибір шляху коду на клас реалізації - це хитрощі. Завдання, яке я використовую, - це визначити функцію інтерфейсу та реалізувати її, повернувши буквальне:
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";
}
...
}
Однак використовувати цей синтаксис було б простіше, зрозуміліше і менш схильне до аберантної реалізації:
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";
...
}