Ü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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage