2017-12-20 2 views
0

ジェネリックタイプクラスを作成したいと思います。<T>は、タイプが<String>のコレクションクラスを拡張するクラスを受け入れます。Tがコレクションを拡張するように汎用<T>クラスを作成する方法<String>?

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> 

それは罰金コンパイルが、私はので、必要なものではないthatsのこのWorkerクラスのインスタンスは、Stringではない他のクラスの型で作成できます。 (< Integer>,<Character>などのように)。

文字列を保持するコレクションクラスを拡張/実装するタイプのクラスのインスタンスをユーザーに作成させるにはどうすればよいですか?

+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はジェネリック型です(これはリストして拡張を設定します)。

関連する問題