-1

我正在尝试enum从另一个文件导入一个。我在第一个文件中有以下代码:

public class Colour {

    public enum Color {
        RED, ORANGE, YELLOW, GREEN, BLUE, BLACK, WHITE; // ; is optional

        @Override
        public String toString() {
            switch (this) {
            case RED:
                return "red";
            case ORANGE:
                return "orange";
            case YELLOW:
                return "yellow";
            case GREEN:
                return "green";
            case BLUE:
                return "blue";
            case BLACK:
                return "black";
            case WHITE:
                return "white";
            default:
                throw new IllegalStateException();
            }
        }

    }

现在我想将这些导入另一个,比如说 class Test

public class Test { }

我将如何在这两个文件中做到这一点?谢谢

4

5 回答 5

3

如果它们在同一个包中,则不必像任何其他 java 类一样导入它们。

如果他们不是,你会像导入一个类一样做:

import com.mycompany.mypackage.Colour.Color;

编辑:我刚刚注意到它是一个嵌套枚举(对不起) - 如果它在同一个包中,你仍然不需要导入它,但要声明它你会使用Colour.Color.

请注意,您将在Colour.java文件中定义包,如下所示:

package com.mycompany.mypackage;
于 2012-08-03T17:57:46.773 回答
1

这不是答案,但注释不会让我格式化大块代码。我只是想提出一些代码改进。要准确地执行您的枚举toString()正在执行的操作,您可以简单地使用以下命令显着缩短它:

@Override
public String toString() { return this.name().toLowerCase(); }

当然,如果您希望能够改变小写表示的值,则使用构造函数将 displayValue 设置为这样(比 case 语句好得多)。

public class Colour {

    public enum Color {
        RED("red-ish"),
        ORANGE("orange-ish"),
        YELLOW("yellow-like"),
        GREEN("very green"),
        BLUE("like the sky"),
        BLACK("blanco"),
        WHITE("weiss");

        String displayVal;

        Color(String displaVal) { this.displayVal = displayVal; }

        public String toString() { return displayVal; }
    }

}
于 2012-08-03T18:11:56.570 回答
0

假设枚举和类都在同一个包中,只需声明为:

Colour myColour = Colour.RED;

也建议使用Eclipse,它使用快捷键(CTRL + Shift + M)为您整理导入。

于 2012-08-03T17:58:41.303 回答
0

如果它们在同一个包中,则根本不需要导入它们。如果它们位于不同的包中,请使用java import 语句。或查看此讨论以获取更多信息。

于 2012-08-03T17:59:27.437 回答
0

停止使用记事本并切换到像Eclipse这样的集成开发环境 (IDE) 。您可以免费下载它,它可以帮助您进行导入、编译、代码格式化、自动完成和许多其他工作。了解所有功能可能需要一段时间,但它会立即改善您作为开发人员的生活。

看来您不了解 Java 中的包。请参阅我解释软件包的此答案。

于 2012-08-03T19:13:35.563 回答