Lợi ích của việc xây dựng chung cho một lớp không chung chung là gì? Thông số Java cho phép những điều sau đây:Lợi ích của các nhà xây dựng chung
class NonGeneric {
<T> NonGeneric() { }
...
NonGeneric ref = new <String> NonGeneric();
}
Có thể đưa ra ví dụ thực tế khi tăng cường an toàn cho lớp học không? Làm thế nào nó sẽ tốt hơn so với việc sử dụng Generic ở nơi đầu tiên.
Tôi hiểu rằng các nhà thiết kế Java muốn các nhà thầu phải nhất quán hơn với các phương pháp. Cho rằng nhà xây dựng có thể có tác dụng phụ, nhà thầu chung có thể sử dụng Generics để đột biến một số thông số mà tài liệu tham khảo không được giữ lại, như trong
<T> NonGeneric(T obj, List<T> list) {
list.add(obj);
// Don't hold a reference to list
}
Vâng, nó cho phép các phương thức chung được thay thế bởi các nhà xây dựng (nhưng tại sao bạn muốn?). Tôi đã không bao giờ thực sự nhìn thấy một trong tự nhiên. Đối với tiền của tôi, đó là một biến chứng mà ngôn ngữ có thể đã làm mà không có (như C# đã làm sau này khi nó giới thiệu phiên bản của nó về Generics Java). –