基本上,这是我的代码的要点:
// 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.
答案 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
他们。