12

这听起来像是一个奇怪的问题,但是如何定义一个必须扩展类并实现接口的泛型呢?我目前有一个具有以下原型的通用函数:

public static <E extends Enum<E>> List<E> buildEnumList(Class<E> enumClass)

这正如预期的那样工作。我现在的问题是我想进一步将可传递的类限制为枚举并实现特定接口Readable(不是 java.lang 中的接口)。由于泛型使用相同的关键字extends来指示它应该实现一个接口,我看不到任何方法来获得以下伪行为:

public static <E extends Enum<E> implements Readable> List<E> buildLexicographicalEnumList(Class<E> enumClass)
4

1 回答 1

25

您可以使用&来指示E还必须实现一个接口:

public static <E extends Enum<E> & Readable> List<E> buildLexicographicalEnumList(Class<E> enumClass) {
于 2012-07-26T15:21:01.063 回答