【问题标题】:Generic extending class AND implements interface [duplicate]通用扩展类和实现接口[重复]
【发布时间】:2012-07-26 15:17:40
【问题描述】:

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

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)

【问题讨论】:

    标签: java generics interface enums


    【解决方案1】:

    您可以使用&amp; 表示E 还必须实现一个接口:

    public static <E extends Enum<E> & Readable> List<E> buildLexicographicalEnumList(Class<E> enumClass) {
    

    【讨论】:

    • 也可以用逗号分隔。
    • @corsiKa 我也是这么想的,但找不到in the JLS。虽然它确实可以编译。
    • 现在我担心他们实际上做了两件不同的事情...... :-(
    • 它定义了第二个/第n个类型参数。
    • @BenSchulz 确实;逗号是我的第一次尝试,但它定义了第二个类型参数。然而,这工作得很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2016-08-10
    相关资源
    最近更新 更多