0
我想設計一個特殊類型的集合,可能只包含它自己的類型的元素。這個集合類也必須是可擴展的。乍一看,這似乎是一個很簡單的任務:創建一個總是擴展類使用它
public class MyClass<E extends MyClass> implements Collection<E>{
//insert Collection<E> methods here...
}
然而,由於這些收藏品之一可能只包含有它的類的實例元素,下面應該是不可能的:
public class MySubclass extends MyClass<MyClass>{}
我需要的是一個版本的MyClass基本上做以下(不要試圖編譯此):
public class MyClass<E extends this.getClass()> implements Collection<E>{...}
是否有可能實現這樣的事情?如果是這樣,該怎麼辦?
的「無限循環」時等於類型的節點的樹是期望的可能是可接受的。而'MyClass();'可以很容易地通過'MyClass''抽象'來禁止。 – Holger
WRT抽象,仍然可以做'SubClass extends MyClass {}'。在Java中不需要使用泛型,它只是給出原始類型警告。 –
+1(如果我可以)簽名;它不允許MySubclass擴展MyClass,這是朝着正確方向邁出的一步!然而,使MySubclass擴展MyClass仍然允許將一個超類添加到它中(但只限於MyClass,而不是Object)。是的,Holger是正確的,一連串的節點正是這裏所需要的;這些藏品完全是爲了成爲唯一存儲的東西。 也許該運行時強制添加可能對我有用。你會介意如何去做這樣的事情嗎? –