2017-02-15 5 views
0

Ich habe eine grundlegende Frage zu Java Generics. Ich habe eine Methode, die dies als Argument:Java generische Klasse als Parameter

public id findKey(List<String> ids, CustomClass clazz) { 
    repos.findID(ids, clazz); 
} 

Ich mag dann für eine andere Methode eine Java generische Klasse als Argument verwenden:

repos.findID(ids, clazz); 

aber meine findID Methode eine Java generische Klasse braucht anstelle von clazz. Wie bekomme ich mein Clazz-Argument vom findkey-Parameter und verwandle es in eine generische Klasse? Wenn ich dies tun:

public id findKey(List<String> ids, Class<T> clazz) { 
    repos.findID(ids, clazz); 
}  

bekomme ich einen Fehler, weil es nicht meinen T. erkennt

ich bin ratlos, wie dieses Zeug funktioniert und jede mögliche Hilfe schätzen würde.

Bearbeiten: Gelöst es. Ich kann nutzen ? oder geben Sie explizit eine Klassenart an, die ich wollte und akzeptierte sie.

+6

Sofern Sie nicht 'T' an anderer Stelle in Ihrer Methode benötigen, ist' Class 'ausreichend. Ansonsten definiere einfach eine Typvariable: 'public id findKey (...'. –

+0

Danke, ich habe es 10 Sekunden nach dem Posten gelöst. –

+1

dann bitte antworte selbst - vielleicht hilft es jemand anderem –

Antwort

1

Es gibt zwei Möglichkeiten:

  • Ihre Art als unbekannt

    definieren
    public id findKey(List<String> ids, Class<?> clazz) 
    
  • eine Art

    public <T> id findKey(List<String> ids, Class<T> clazz) 
    
1

Verwenden public id findKey(List<String> ids, Class<?> clazz) Variable definieren und mehr über Platzhalter lesen

Verwandte Themen