Tôi đang cố gắng tìm ra cách để có được generics để nhảy qua hoops.Generics Puzzler
tôi có:
interface Root { }
interface Middle extends Root { }
class Type implements Root { }
Và nhiều "Loại" lớp:
class Subtype1 extends Type implements Middle { }
class Subtype2 extends Type implements Middle { }
...
Những gì tôi muốn là để khai báo một lớp học với hai tham số kiểu T
và S
, nơi T
bị ràng buộc bởi Type
và S
bị ràng buộc bởi T
và Middle
.
Tôi không thể nhìn thấy một cách có generics để đảm bảo rằng S
mở rộng T
VÀ triển khai Middle
. Những gì tôi muốn là một cái gì đó như:
class Handler<T extends Root, S extends T, S extends Middle>;
hoặc
class Handler<T extends Root, S extends <T extends Middle>>;
Nhưng tất nhiên không phải là hợp pháp. Có lẽ có một số phép thuật tôi đang mất tích?
Bạn không thể làm điều này. Bạn có thể có nhiều giới hạn nhưng chúng phải là 0-1 Class cộng với nhiều giao diện. Bạn không thể có kiểu Chung trong một tình huống bị ràng buộc nhiều. Tôi nghi ngờ hạn chế này đã được giữ bởi vì để cho phép loại trong nhiều giới hạn sẽ tạo ra rất nhiều phức tạp để kiểm tra cú pháp, cho một trường hợp cạnh hiếm là gì. – BevynQ
liên quan: http://stackoverflow.com/a/13261667/697449 –
Cảm ơn. Đó là đọc của tôi là tốt, nhưng figured nó đã có thể tôi đã thiếu một cái gì đó trong spec. Hãy sử dụng nó! –