Java 枚举作为一个类工作?

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

我编写了一个测试类,并尝试枚举类型:

因此,我似乎可以使用enum“声明”一个类(因为我的包中没有类Car),然后我将方法
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();
}