gpt4 book ai didi

Java枚举问题

转载 作者:行者123 更新时间:2023-12-02 08:27:52 26 4
gpt4 key购买 nike

我有两个Enum,如下所示:

enum Connector {
AND, OR, XOR;
}

enum Component {
ACTIVITY
}

现在,我在 Event 类中有一个名为 follower 的变量。此变量(follower)可以(并且应该具有)来自上述两个 Enum 中的任何一个的值。

那么,我应该为 follower 变量提供什么数据类型?

最佳答案

声明 follower 的接口(interface)字段。

public interface Follower {
// any methods
}

并让两个枚举都实现该接口(interface)。

public enum Connector implements Follower {
AND, OR, XOR;
}


enum Component implements Follower {
ACTIVITY
}

然后你可以声明你的字段:

Follower follower = Connector.OR;  

或者

Follower follower = Component.ACTIVITY;

与将该字段声明为 Enum<? extends Follower> 相比,这有几个明显的优势(我能想到的)。通过这种方式,您可以自由地将方法添加到 Follower接口(interface),而无需将来修改字段,而您无法控制 Enum输入,所以如果您决定 Follower如果需要一个方法,则必须在每个地方更改声明。您的场景可能永远不会出现这种情况,但使用这种方式的成本很低,这是很好的防御实践。

第二个稍微不那么重要的优点,更多的是关于品味:它避免了类型中的泛型,当您包含通配符时,泛型可能会变得不太可读。

关于Java枚举问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2301989/

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