2017-12-20 8 views
0

generic 형식 인 ThreadWorker 클래스를 만들고 싶습니다. <T><String> 유형의 Collection 클래스를 확장하는 클래스를 허용합니다.T가 컬렉션 <String>을 확장하도록 일반 <T> 클래스를 만드는 방법은 무엇입니까?

public class Worker <T extends Collections<String>> extends SwingWorker<VectorDetails , String>  

하지만 오류 얻을 :

나는 시도 내가 쓸 때 또한

The type Collections is not generic; it cannot be parameterized with arguments <String> 

을 :

public class Worker <T extends Collections> extends SwingWorker<VectorDetails , String> 

그것은 잘 컴파일,하지만 난 이후 필요하지 이잖아 이 Worker 클래스의 인스턴스는 String이 아닌 다른 클래스의 유형으로 생성 될 수 있습니다. (예 : < Integer>, <Character> 등).

문자열을 보유하고있는 Collection 클래스를 확장/구현하는 유형의 클래스를 사용자가 어떻게 만들 수 있습니까?

+5

'컬렉션'(단수)을 원하셨습니까? –

+3

['Collections'] (https://docs.oracle.com/javase/9/docs/api/java/util/Collections.html)는 많은 정적 메소드가있는 비 - 제네릭 클래스이며, ['Collection '] (https://docs.oracle.com/javase/9/docs/api/java/util/Collection.html)은 일반적인 인터페이스입니다. – Powerlord

답변

1

찾고 계신가요?

class StringCollection<T extends Collection<H>, H extends String> {} 
+0

'String'은 final이므로'H extends String'은 불필요합니다. 질문은 단지 오타였습니다. – Kayaman

+0

네,'''String'' 자체는이 경우에는별로 의미가 없지만 대신 자신 만의 타입을 사용하고자한다면 위의 코드가 잘 동작해야합니다 : D –

1

오류는 코드에서 무엇이 잘못되었는지를 나타냅니다. Collections은 제네릭 유형이 아닙니다. 이것은 콜렉션을 조작하기위한 많은 정적 메소드가있는 유틸리티 클래스입니다. Collection<String> 또는 모든 유형을 사용해야합니다. Collection은 제네릭 형식 (확장 목록 및 집합)입니다.