繁体   English   中英

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

[英]How to static-import enums residing in separate files in Java?

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

// 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.

您可以使用:

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

弄清楚了! 将两个enum源文件都移动到名为mypackage子文件夹中,并且除了import static值外,还正常import它们。 Shape类现在开始如下:

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

编辑:实际上,不需要移动enum源文件。 只需将其标准import即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM