gpt4 book ai didi

java - 如何在 Java 中调用泛型枚举的实现方法?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:29:52 26 4
gpt4 key购买 nike

我正在尝试将一个枚举传递给一个方法,遍历该枚举值,然后调用该枚举对所有这些值实现的方法。我在“value.getAlias()”部分收到编译器错误。它说“方法 getAlias() 未定义类型 E” 我试图表明 E 实现了 HasAlias 接口(interface),但它似乎不起作用。这可能吗?如果可以,我该如何修复下面的代码来做我想做的事?下面的代码只是为了展示我的过程,我并不打算只打印枚举中的值的名称,而是为了演示我的问题。

public interface HasAlias{ String getAlias(); };

public enum Letters implements HasAlias
{
A("The letter A"),
B("The letter B");

private final String alias;

public String getAlias(){return alias;}

public Letters(String alias)
{
this.alias = alias;
}

}

public enum Numbers implements HasAlias
{
ONE("The number one"),
TWO("The number two");

private final String alias;

public String getAlias(){return alias;}

public Letters(String alias)
{
this.alias = alias;
}

}

public class Identifier
{
public <E extends Enum<? extends HasAlias>> void identify(Class<E> enumClass)
{
for(E value : enumClass.getEnumConstants())
{
System.out.println(value.getAlias());
}
}
}

最佳答案

下面是如何将类型绑定(bind)到实现 HasAlias 的枚举:

<E extends Enum<E> & HasAlias>

一旦你做出这样的改变,剩下的就可以了。

关于java - 如何在 Java 中调用泛型枚举的实现方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13674818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com