2016-08-27 4 views
-1

Ich versuche, einen generischen Typ mit einer Schnittstelle zu parametrisieren und Eclipse sagt mir, dass die Methode abc() nicht für den Typ T implementiert ist. Natürlich ist es nicht implementiert, da T eine Schnittstelle ist, das Programm wird zur Laufzeit herausfinden, was T wirklich ist. Also, wenn mir jemand helfen könnte, das zu lösen, wäre ich wirklich dankbar.Java-Schnittstellen und Parameter Typen

Ich habe so etwas wie:

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

wo myClassInterface definiert? –

+0

T ist ein generischer Typ. Wo ist die Verbindung zu Ihrer Schnittstelle? –

+0

[Begrenzter generischer Typ] (https://docs.oracle.com/javase/tutorial/java/generics/bounded.html) ist, was Sie brauchen –

Antwort

3

Wie Sie definiert haben es T vom Typ Object. Was Sie stattdessen wünschen, gibt dem Compiler den Hinweis, dass T eigentlich eine Art myInterface ist. Sie tun das, durch die Definition, dass T erstreckt myInterface:

class myClass<T> implements myClassInterface<T extends myInterface>{ 
     String myMethod(){ 
      T myType; 
      return myType.abc(); 
     } 
} 
+0

Ich habe versucht: Klasse myClass implementiert myClassInterface und es hat funktioniert . Vielen Dank ! – Lexy