gpt4 book ai didi

Java 枚举方法 - 为每个对象切换与覆盖

转载 作者:行者123 更新时间:2023-11-30 07:58:46 25 4
gpt4 key购买 nike

让我们考虑一个枚举。

为每个对象创建一个带有“switch(this)”的方法有什么区别并创建一个抽象方法并为枚举中的每个对象覆盖它?

最佳答案

当您不更改枚举时,不一定有区别。但是,让我们看一个例子:

enum MyEnum {
FIRST
{
@Override
void foo() {
//Do something
}
},
SECOND
{
@Override
void foo() {
//Do something else
}
};

abstract void foo();
}

现在,如果我们向这个枚举添加一个新元素 THIRD,那么编译器将确保我们实际实现了这个方法。

让我们看看开关盒:

enum MyEnum {
FIRST,
SECOND;

void foo() {
switch (this) {
case FIRST:
//Do something
break;
case SECOND:
//Do something else
break;
default:
break;
}
}
}

如果我们要添加一个新元素 THIRD,那么我们可能会忘记在 switch 语句中添加一个额外的 case,这意味着我们需要更加小心。

另一个区别是 switch 可以用于这些枚举对象的外部功能,而我们不能向枚举本身添加额外的方法。

关于Java 枚举方法 - 为每个对象切换与覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40133361/

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