Tôi có một loạt các lớp trong java mà tất cả triển khai một giao diện được gọi là IdObject (chỉ định phương thức getId()). Hơn nữa, tất cả chúng cũng thực hiện Comparable <> với chính chúng như là tham số kiểu, vì vậy chúng có thể so sánh với chính chúng.Java: Khai báo các biến có nhiều "ràng buộc" chung trên chúng
Điều tôi muốn làm là khai báo danh sách các đối tượng như vậy, điền vào, sau đó sắp xếp nó và gọi hàm getId() trên chúng. Vì vậy, mã của tôi trông như thế này:
List<? extends IdObject & Comparable<?>> objectList = null;
if (foo) {
objectList = new ArrayList<TypeA>();
...
} else if (bar) {
objectList = new ArrayList<TypeB>();
...
}
if (objectList != null) {
Collections.sort(objectList);
for (IdObject o : objectList) {
System.out.println(o.getId());
}
}
Về cơ bản vấn đề của tôi nằm trong dòng đầu tiên - Tôi muốn xác định hai "trở ngại" cho các loại bởi vì tôi cần người đầu tiên để đảm bảo tôi có thể in ID trong vòng lặp và thứ hai để đảm bảo rằng tôi có thể sử dụng Collections.sort() trong danh sách.
Dòng đầu tiên không biên dịch.
Có cách nào để thực hiện công việc này mà không chỉ định loại chung mà không có thông số loại và sử dụng các hoạt động không được kiểm tra? Tôi cũng không thể tìm thấy một ví dụ về điều này trên internet.
Chúc mừng
Cảnh báo: CompIdObject của bạn không được khai báo là chung chung. – Nicolas