gpt4 book ai didi

java - 覆盖 Java 枚举中的泛型方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:10:19 24 4
gpt4 key购买 nike

为了为通用公共(public)方法的每个枚举实例提供特定行为,我们可以执行以下操作:

public enum Action { 
a{
void doAction(...){
// some code
}

},
b{
void doAction(...){
// some code
}

},
c{
void doAction(...){
// some code
}

};

abstract void doAction (...);
}

是否有任何方法可以为枚举中定义的抽象泛型方法提供具体实现?

例如:

abstract<T> T doAction (T t);

我在其他问题中读到它不应该是可能的,但我一直在努力寻找解决方法并想出了过于复杂的装置。也许泛型不是正确的方法。有没有更简单的方法来实现这一点?

最佳答案

是的,你可以做到。只需保留抽象方法定义,在每个枚举常量中,您必须执行如下操作:

a{
@Override
<T> T doAction(T t) {
//your implementation
}
}...

但是,请注意 T a 中的类型参数常量与 T 不同b 的类型参数常数等。

完成后,您可以像这样使用它:

String string = Action.a.<String>doAction("hello");

Integer integer = Action.b.<Integer>doAction(1);

在这里显式提供类型是完全可选的,因为编译器将根据提供的参数类型推断结果类型。

关于java - 覆盖 Java 枚举中的泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29845329/

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