簡體   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