2017-07-17 16 views
1

に対処しながら、私はクラスとインタフェース次き:バウンド不一致エラージェネリックと継承

public class Entity {} 
public interface EntitySet<T extends Entity> {} 

今、私はクラスEntitySetインターフェイスを実装し、タイプTを再利用を書きたいです。

Syntax error on token "extends", , expected

は、だから私が試した:これは私にエラーを与える

public class Method1EntitySet<T> implements EntitySet<T extends Entity>{} 

Bound mismatch: The type T is not a valid substitute for the bounded parameter of the type EntitySet

これは動作します:

public class Method1EntitySet<T> implements EntitySet<T>{} 

これは私にエラーを与える私は、次の試してみました

public class Method1EntitySet<T> implements EntitySet{} 

が、それは私が警告を与える:

EntitySet is a raw type. References to generic type EntitySet should be parameterized.

はまた、私は推測する、Tの上にはEntityを延長することを余儀なくされていません。

どうすればよいですか?

答えて

4

タイプバウンドはどこジェネリック型パラメータTでなければなりません宣言されています。

public class Method1EntitySet<T extends Entity> implements EntitySet<T>{} 
+0

と私はT ' 'のタイプを指定したい場合は、単に' TはEntity'を拡張しませんか? – anir

+0

'publicクラスMethod1EntitySetはEntitySet {}'を実装しています。これを指定している場合、型変数は必要ありません。 –

+0

@anirこの場合、 'implements EntitySet '節でTを使用することはできません。 – Eran

関連する問題