Java 枚举作为一个类工作?
我编写了一个测试类,并尝试枚举类型: 因此,我似乎可以使用enum“声明”一个类(因为我的包中没有类Car),然后我将方法Java 枚举作为一个类工作?,java,class,object,enums,Java,Class,Object,Enums,我编写了一个测试类,并尝试枚举类型: 因此,我似乎可以使用enum“声明”一个类(因为我的包中没有类Car),然后我将方法run()放进去看看会发生什么。之后,我按照IDE的建议编写了run()主体,但也在枚举中 我觉得这很奇怪,但还好。我继续我的弗兰肯斯坦实验,并试图在main上用构造函数初始化对象 enum Car { MERCEDEZ, FERRARI; public void run() { // TODO Auto-generat
run()
放进去看看会发生什么。之后,我按照IDE的建议编写了run()
主体,但也在枚举中
我觉得这很奇怪,但还好。我继续我的弗兰肯斯坦实验,并试图在main上用构造函数初始化对象
enum Car {
MERCEDEZ, FERRARI;
public void run() {
// TODO Auto-generated method stub
};
Car(){}
};
它说我不能实例化EnumTest.Car类型,所以我的测试已经完成了,但是有疑问。抱歉,如果这看起来很愚蠢,但我没有在我的搜索中找到这个
问题:为什么我可以像使用类一样使用汽车,但我不能初始化它?您声明的
汽车
是嵌套的枚举
它嵌套在EnumTest
类中,并绑定到其实例
不能像初始化类那样初始化枚举
但是,您可以声明绑定到每个
enum
实例的方法,例如run
方法。使每个enum实现接口:
enum Car implements Runnable {
MERCEDEZ {
@Override
public void run() {
}
},
FERRARI {
@Override
public void run() {
}
};
};
public static void main(String[] args) {
Car carObj = Car.MERCEDEZ;
carObj.run();
}
枚举类型的构造函数必须是包私有或私有访问。它会自动创建在枚举体开头定义的常量。您不能自己调用枚举构造函数。您的误解源于不知道引用在Java中是如何初始化的<代码>汽车卡罗布代码>-这不会初始化任何内容,无论
enum
是类还是enum。
enum Car {
MERCEDEZ, FERRARI;
public void run() {
// TODO Auto-generated method stub
};
Car(){}
};
Car carObj = new Car();
enum Car implements Runnable {
MERCEDEZ {
@Override
public void run() {
}
},
FERRARI {
@Override
public void run() {
}
};
};
public static void main(String[] args) {
Car carObj = Car.MERCEDEZ;
carObj.run();
}