为什么类中的公共枚举类型不能在单独的主类中初始化?

时间:2015-11-02 03:05:42

标签: java error-handling enums declaration

public class Temperature {

    private int id;
    private Type type;
    private int temperature;

    public Temperature(int id, int temp, Type t) {
        this.id = id;
        this.type = t;
        this.temperature = temp;
    }

}

public enum Type {
    CELSIUS("C"), FAHRENHEIT("F");
    private String type;

    private Type(String t) {
        this.type = t;
    }
}

public class main {
    public static void main(String[] args) {
        Temperature t = new Temperature(1, 36, Type.CELSIUS);
    }
}

以下是三个单独的文件,包括Temperature.java,Type.java和Main.java,但是如果在Temperature.java中声明了枚举类型,那么当我在main.java中初始化温度对象时会出错,为什么那?如果我们使用这3个单独的文件,则没有错误。

1 个答案:

答案 0 :(得分:1)

如果枚举是里面的温度,那么它的完全限定名称是Temperature.Type。即,Temperature.Type.CELSIUSTemperature.Type.FAHRENHEIT

如,

如果温度如下:

package containingPackage;

public class Temperature {

    private int id;
    private Type type;
    private int temperature;

    public Temperature(int id, int temp, Type t) {
        this.id = id;
        this.type = t;
        this.temperature = temp;
    }

    enum Type {
        CELSIUS("C"), FAHRENHEIT("F");
        private String type;

        private Type(String t) {
            this.type = t;
        }
    }
}

然后要使用枚举,必须在其前面加上温度类名称:

Temperature t = new Temperature(1,36, Temperature.Type.CELSIUS);

您可以通过完全导入枚举来解决这个问题:

import containingPackage.Temperature.Type;