【问题标题】:Java: List initialization with Generics (T extends Enum<T> & AnyInterface)Java:使用泛型进行列表初始化(T 扩展 Enum<T> 和 AnyInterface)
【发布时间】:2016-11-18 08:24:17
【问题描述】:

我在使用泛型方面仍然很弱,我有一个问题: 基于以下方法,我想初始化一个列表:

public <T extends Enum<T> & AnyInterface> boolean getIsDescSort(Class<T> tableSortEnum) {
        return tableSortEnum.getName().endsWith(DESC_SUFFIX);
}

(通常)可以用这些类型的对象完全初始化 List 吗?或者换句话说:我可以用这些信息输入我的列表吗?实现某个接口的枚举?

List<T extends Enum<T> & AnyInterface> myList;

在我的 Eclipse IDE 中显示了几个错误,所以我认为它不会编译。 我阅读了一些关于此的文章,但不知道在初始化集合时是否允许/可能...

【问题讨论】:

  • “不工作”就像我用“是的,它可能”来回答你一样有用。
  • 'T extends Enum & AnyInterface' 是“交集类型”。这真是高级的东西。

标签: java generics collections enums


【解决方案1】:

您试图在错误的位置输入。例如以下将正常工作

public class Foo<T extends Enum<T> & AnyInterface> {
    private List<T> foo;
}

这样

public static <T extends Enum<T> & AnyInterface> List<T> foo(Class<T> clazz) {
    ArrayList<T> foo = new ArrayList<>();
    return foo;
}

【讨论】:

    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 2023-02-02
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多