我正在尝试从其他文件导入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();
}
}
}
现在我想将这些导入到另一个,让我们说类Test
。
public class Test { }
我将如何在两个文件中执行此操作? 感谢
答案 0 :(得分:3)
如果它们在同一个包中,则不必像其他任何java类一样导入它们。
如果他们不是,那就像你导入一个课程一样:
import com.mycompany.mypackage.Colour.Color;
编辑:我刚刚注意到它是一个嵌套的枚举(抱歉) - 如果它在同一个包中,你仍然不需要导入它,但要声明它你将使用Colour.Color
。
请注意,您要在Colour.java
文件中定义包,如下所示:
package com.mycompany.mypackage;
答案 1 :(得分: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; }
}
}
答案 2 :(得分:0)
假设enum& class在同一个包中只是声明,比如说:
Colour myColour = Colour.RED;
同样会使用Eclipse,它会使用快捷键(CTRL + Shift + M)为您排序导入。
答案 3 :(得分:0)
如果它们在同一个包中,则根本不需要导入它们。如果它们位于不同的包中,请使用java import statement。或者请参阅this discussion了解详情。
答案 4 :(得分:0)
停止使用记事本并切换到Eclipse等集成开发环境(IDE)。您可以免费下载它,它可以帮助您进行导入,编译,代码格式化,自动完成和许多其他的东西。可能需要一段时间才能了解所有功能,但它会立即改善您作为开发人员的生活。
您似乎不了解Java中的包。请参阅this answer我在哪里解释包。