고유 한 유형의 요소 만 포함 할 수있는 특수 유형의 컬렉션을 디자인하려고합니다. 이 컬렉션 클래스는 확장 가능해야합니다. 언뜻 보면, 이것은 충분히 간단한 작업처럼 보인다 이러한 컬렉션 중 하나는 그 클래스의 인스턴스 인 요소를 포함 할 수 있기 때문에, 그러나클래스를 항상 확장하는 일반 만들기
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는 MyClass {}'를 확장 할 수 있습니다. Java에서는 제네릭을 사용할 필요가 없으며 원시 형식 경고 만 제공합니다. –
+1 (가능한 경우) 서명. MySubclass가 MyClass를 확장하는 것을 허용하지 않습니다., 올바른 방향으로 나아가 야합니다! 그러나 MySubclass를 확장하면 MyClass가 여전히 수퍼 클래스를 추가 할 수 있습니다 (Object가 아니라 MyClass까지만). 그리고 예, Holger는 정확합니다. 노드의 체인은 정확히 여기서 원하는 것입니다. 컬렉션은 완전히 저장된 유일한 것들입니다. 아마도 런타임에 적용되는 추가 기능이 나에게 유용 할 수 있습니다. 그런 일을하는 법을 보여 주시겠습니까? –