3
나는 Foo<T>
클래스를 가지고있다. T
을 BarInterface
을 구현하는 클래스로 만들고 싶다고 어떻게 말할 수 있습니까? 단순히 class Foo<T implements BarInterface>
으로 작성하는 것은 컴파일되지 않습니다.일반 클래스에서 "T"로 허용되는 유형을 제한하는 방법은 무엇입니까?
나는 Foo<T>
클래스를 가지고있다. T
을 BarInterface
을 구현하는 클래스로 만들고 싶다고 어떻게 말할 수 있습니까? 단순히 class Foo<T implements BarInterface>
으로 작성하는 것은 컴파일되지 않습니다.일반 클래스에서 "T"로 허용되는 유형을 제한하는 방법은 무엇입니까?
implements
대신 extends
을 사용하십시오.
... 컴파일러를 가지고 있다면 즉시 테스트 할 수 있습니다. 'class Foo '가 아니어야합니다. extends BarInterface>'-'extends'는 [WildcardBound] (http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.5.1) ... –
+1 한 쪽 메모 추가하기 : Generics의 맥락에서 확장하면 'extends'와 'implements'의 의미를 모두 가지고 있는데, 처음에는 꽤 혼란 스럽다. – helpermethod
@Andreas : 아니요, 와일드 카드에서만 작동하지 않으며 템플릿 인수에서도 작동합니다. –