Tôi xem xét yêu cầu rằng các trường là cuối cùng là hạn chế quá mức và lỗi của các nhà thiết kế ngôn ngữ Java. Có những lúc, ví dụ: xử lý cây, khi bạn cần phải thiết lập hằng số trong việc thực hiện được yêu cầu để thực hiện các hoạt động trên một đối tượng của kiểu giao diện. Chọn một đường dẫn mã trên lớp thực hiện là một kludge.Cách giải quyết mà tôi sử dụng là để xác định một chức năng giao diện và thực hiện nó bằng cách trả lại một chữ:
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";
}
...
}
Tuy nhiên, nó sẽ đơn giản hơn, rõ ràng hơn và ít bị thực hiện khác thường sử dụng cú pháp sau:
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";
...
}
Nguồn
2014-04-03 19:13:11
Nó không nhất thiết phải đúng là các trường cuối cùng là hằng số; đó là chỉ đảm bảo cho các loại nguyên thủy. Nói chung, từ khóa cuối cùng chỉ có nghĩa là vị trí bộ nhớ sẽ không thay đổi. – Pops
Tôi không nói các trường cuối cùng là hằng số, chỉ là hằng số là các trường cuối cùng. Lưu ý rằng nó được phép đặt một trường tĩnh cuối cùng không nguyên thủy trong một giao diện. Mặc dù nội dung của trường đó có thể thay đổi, tham chiếu đến nó là không đổi. –
@AdriaanKoster Bạn đã nói chính xác rằng trường cuối cùng là hằng số: * Không có trạng thái nào được thực thi bởi chỉ cho phép các hằng số. * - Câu này ngụ ý rằng tất cả các trường cuối cùng là hằng số. Bạn có thể cố gắng tiếp tục tranh luận về những từ bạn đã sử dụng, nhưng rõ ràng là tuyên bố của bạn đang bị cho thuê sai lệch. –