2016-04-04 3 views
0

Angenommen, wir haben eine Schnittstelle:Wie Methode mit Liste implementieren, die generischen Parameter mit Parameter enthält

public interface MyInterface<Key> 
{ 
    Key getKey(); 
} 

Dann haben wir zwei Klassen:

public class ClassWithString implements MyInterface<String> 
{....................} 
public class ClassWithInteger implements MyInterface<Integer> 
{....................} 

Wie so etwas zu machen:

public static Map convert(List<? extends MyInterfac<K>> list) 
{ 
    ..... 
} 

Eigentlich brauche ich eine Methode, die

  1. kann mit Listen arbeiten.
  2. Elemente der Liste muss MyInterface mit Parameter erweitern. Wie man diese Parameter machen ?:

    (List<? extends MyInterfac<K>> list) 
    

Natürlich convert Methode würde nicht laufen, ich wünschte nur, so etwas zu realisieren.

Antwort

1

Try this:

public static <T extends MyInterface<F>,F> Map<F,T> convert (List<T> list){ 
    return null; 
} 

edit:Generic methods können Sie Typ Parameter an Methoden zu übergeben. In Ihrem Fall benötigen Sie einen Typ T, der MyInterface und den generischen Typ F der Schnittstelle selbst erweitert. Mit beiden Parametern können Sie die Karte sogar parametrisieren. Die JVM wird die Typen ableiten, wo immer sie können. In Fällen, in denen die JVM die Typen nicht ableiten kann, müssen Sie den Rückgabetyp möglicherweise manuell umwandeln.

+1

-Code Deponien sind nicht sinnvoll Antworten. Sag * was * du getan hast und * warum *. –

0

ändern

public static Map convert(List<? extends MyInterfac<Key>> list) 

Um

public static Map convert(List<? extends MyInterfac<?>> list) 
Verwandte Themen