gpt4 book ai didi

java - 重载枚举抽象方法

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

是否可以重载枚举抽象方法?

我已经在我的代码中试过了,但没有效果。呈现类

public class Test {
public void test(String string){
System.out.println(string);
}

public void test(Object object){
System.out.println("Test1");
}

public static void main(String[] args) {
Object object = new Object();
test.test(object);
test.test("what if?");
}
}

给出预期的结果

Test1
what if?

枚举

public enum TestEnum {
TEST1{
public void test(String string){
System.out.println(string);
}

public void test(Object object){
System.out.println("Test1");
}
},
TEST2{
public void test(Object object){
System.out.println("Test2");
}
};

public abstract void test(Object object);
}

public class Test {
public static void main(String[] args) {
Object object = new Object();
TestEnum.TEST1.test("what if?");
TestEnum.TEST1.test(object);
}
}

返回

Test1
Test1

是否有可能重载 Enum 方法,或者我做错了什么?或者也许我应该检查覆盖方法内部的类型然后采取相应的行动?但是后来我删除了 switch 语句只是为了引入另一个 switch 语句。

最佳答案

关于枚举的事情是,带有主体的值被实现为 TestEnum 的匿名子类;所以它们看起来像这样:

final TestEnum TEST1 = new TestEnum() { /* body */ };

虽然 TEST1 的具体类是 TestEnum$1(或者编译器决定给它的任何名称),但引用的类型是 TestEnum,因此 TEST1 主体之外的任何代码只能访问 TestEnum 上定义的方法。

关于java - 重载枚举抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43504888/

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