是否可以重载枚举抽象方法?
我已经在我的代码中试过了,但没有效果。 呈现类
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/