Saya menganggap persyaratan bahwa bidang menjadi final sebagai terlalu membatasi dan kesalahan oleh desainer bahasa Java. Ada kalanya, misalnya penanganan pohon, ketika Anda perlu menyetel konstanta dalam implementasi yang diperlukan untuk melakukan operasi pada objek dengan tipe antarmuka. Memilih jalur kode pada kelas pelaksana adalah sebuah kludge. Solusi yang saya gunakan adalah mendefinisikan fungsi antarmuka dan mengimplementasikannya dengan mengembalikan literal:
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";
}
...
}
Namun, akan lebih sederhana, lebih jelas dan tidak terlalu rentan terhadap implementasi yang menyimpang untuk menggunakan sintaks ini:
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";
...
}