2016-08-27 5 views
-1

インターフェイスでジェネリックタイプをパラメータ化しようとしていますが、abc()タイプがTで実装されていないとEclipseから通知されます。もちろん、実装されていないのは、Tがインターフェイスなので、プログラムは実行時に何かTが本当に何であるかを把握します。だから、もし誰かがこれを解決するのを助けることができたら、私は本当に感謝するだろう。あなたはそれTがタイプObjectである定義されてきたようにJavaインターフェイスとパラメータのタイプ

interface myInterface { 
    String abc(); 
} 

class myClass<T> implements myClassInterface<T> { 
    String myMethod() { 
     T myType; 
     return myType.abc(); // here it says that abc() is not implemented for the type T 
    } 
} 

public class Main{ 
     public static void Main(String[] arg) { 
     myClassInterface<myInterface> something = new myClass<myInterface>; 
     } 
} 
+2

:あなたはTmyInterfaceを拡張することを定義することによってそれを行いますか? –

+0

Tは汎用タイプです。あなたのインターフェイスへの接続はどこですか? –

+0

[バインドされた汎用タイプ](https://docs.oracle.com/javase/tutorial/java/generics/bounded.html)が必要です。 –

答えて

3

は、私のようなものを持っています。その代わりに、Tが実際にはmyInterfaceのタイプであるというヒントをコンパイラに与えています。

class myClass<T> implements myClassInterface<T extends myInterface>{ 
     String myMethod(){ 
      T myType; 
      return myType.abc(); 
     } 
} 
myClassInterfaceが定義されている
+0

私は試しました:class myClass myClassInterfaceを実装します 。ありがとうございました ! – Lexy

関連する問題