Übergeben eines zur Laufzeit aufgelösten Parameters an eine Methode mit mehreren gebundenen Typen, Kompilierungsfehler
Ich habe eine Methode, die so aussieht:
public static <T extends Enum<T> & Marshallable> String foo(Collection<T> collection, Class<? extends Marshallable>... marshallables);
Daher erwarte ich, dass die übergebene Auflistung eine Enum-Implementierung der Marshallable-Schnittstelle ist. Es funktioniert einwandfrei, wenn ich zur Laufzeit die konkreten Enum-Typen habe, aber eine Testmethode geschrieben habe, die eine Enum-Liste (die Marshallable implementiert) dynamisch aus dem Klassenobjekt erstellt, und ich habe Probleme, diese Liste in die obige Methode zu übergeben.
@Test
public void fooTest() {
...
if (clazz.isEnum()) { // collection enum xml
List<? extends Enum<? extends Marshallable>> enumList = (List<? extends Enum<? extends Marshallable>>) Arrays.asList(clazz.getEnumConstants());
--> String enumListXml = foo(enumList, clazz);
...
Die markierte Zeile führt zu einem Kompilierungsfehler. Ich konnte nicht herausfinden, wie ich die Liste weitergeben sollte, ohne die Methodensignaturen zu ändern.