如何静态导入驻留在Java中的单独文件中的枚举?

时间:2018-02-27 11:55:22

标签: java import enums

基本上,这是我的代码的要点:

// File: ShapeColor.java
package mypackage;

public enum ShapeColor
{
    MAUVE,
    PURPLE,
    VIOLET;
}

// File: ShapeSize.java
package mypackage;

public enum ShapeSize
{
    TINY,
    SMALL,
    MEDIUM,
    LARGE,
    HUGE,
    COLOSSAL;
}

// File: Shape.java
import static mypackage.ShapeSize.*;
import static mypackage.ShapeColor.*;

public class Shape
{
    private ShapeSize size;
    private ShapeColor color;

    public Shape()
    {
        this(ShapeSize.MEDIUM, ShapeColor.PURPLE);
    }

    public Shape(ShapeSize ss, ShapeColor sc)
    {
        this.size = ss;
        this.color = sc;
    }
}

我如何import static我的enum定义,以便我可以访问enum值而无需限定它们?我将所有.java源文件打包在一个目录中,并且我正在从命令行编译。我不知道包和如何在目录中“组织”我的源文件(或者我甚至应该这样做)。我试过阅读这些概念,但所有这些让我更加困惑。不幸的是,我通过示例和演示代码比阅读文档更好。

修改

package mypackage;添加到enum文件,将import static mypackage.*添加到class文件。我收到以下错误:

.\ShapeSize.java:4: error: duplicate class: mypackage.ShapeSize public enum ShapeSize ^ Shape.java:7: error: cannot access ShapeSize private ShapeSize size; ^ bad source file: .\ShapeSize.java file does not contain class ShapeSize Please remove or make sure it appears in the correct subdirectory of the sourcepath.

2 个答案:

答案 0 :(得分:1)

您可以使用:

import static mypackage.ShapeColor.PURPLE;
import static mypackage.ShapeSize.MEDIUM;

答案 1 :(得分:1)

想出来! 将enum个源文件移动到名为mypackage的子文件夹,并将import除了import static个值以外的其他文件。 Shape类现在开始如下:

import mypackage.ShapeSize;
import mypackage.ShapeColor;
import static mypackage.ShapeSize.*;
import static mypackage.ShapeColor.*;

修改 实际上,无需移动enum源文件。只需标准 - import他们。