gpt4 book ai didi

java - 如何在 Java 中提供枚举值的实现?

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

我有枚举类,其值假设会随着时间增长,我希望添加新枚举值的用户也能在某处提供实现。但我不确定如何强制他们提供实现,因为实现将在其他类(class)中进行。例如

public enum DayType {
SUNDAY,
MONDAY;
}

在类里面提到

class X{
DateType dateType;
..
}

并在其他一些类中使用

if (x.getDateType().equals(DayType.SUNDAY)) {
...
}else if(x.getDateType().equals(DayType.MONDAY)){
..
}

因此,如果有人添加 DateType,那么他也应该被迫在上面的 if-else 逻辑中添加实现。如果可能的话,最好通过添加功能接口(interface)?

我不能在枚举类中强制实现,因为实现具有 spring 依赖性。

最佳答案

真正的答案是:不要这样做。

如果您有某种“类型”,并且您知道这种“类型”会随着时间的推移看到新的化身,需要不同的行为,那么答案就是使用抽象类和多态性。

使用 if/else 链或 switch 语句并不重要:你有这样的想法:

if (someObject.getSomething() == whatever) { then do this } else { that }

是不好的做法!

如果有的话,您应该在工厂中使用这样的 switch 语句来返回不同的子类实例,然后在这些对象上调用“通用”方法。

您当前的方法是 A) 外部化有关内部状态的知识和 B) 还以多种方式强制执行依赖关系。

这就是意大利面条代码的开始方式!最好退后一步,考虑更多的 OOP 方法来解决这个问题!

关于java - 如何在 Java 中提供枚举值的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54512779/

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