Generics: Verschachtelte Typparameter

Hi,

scheinbar habe ich irgendwie einen Knoten im Kopf. Folgender Code funktioniert nicht wie gedacht:


public class User<A extends Enum<A>> {
    // ...
}

// UserRepository.java

import java.util.List;

public interface UserRepository<T extends User<A extends Enum<A>>> {
    List<T> findByAuthoritiesContaining(A authority);
}```

Die Deklaration der User-Klasse passt soweit und da funktioniert auch alles. Im UserRepository kann ich den Typparameter aber nicht angeben. Wieso klappt das nicht? Ist das nur ein Syntaxfehler oder kann Java das einfach nicht?

Woher soll der Compiler wissen, was A ist?

Ich denke, sowas sollte funktionieren:

public interface UserRepository<A extends Enum<A>, T extends User<A>> {
    List<T> findByAuthoritiesContaining(A authority);
}

Danke, das war’s!