导入无法解决?
问题描述:
所以现在,我有一个Brick.java,其中包含一个Levels枚举,我想在BreakoutCourt.java中使用它,它包含在同一个包(默认包)中。导入无法解决?
当我写入import Brick.level;在BreakoutCourt中,我收到一条消息,指出The Import Brick无法解决。即使我写入导入静态Brick.Level,我也会收到该消息!
枚举包含在Brick.java水平看起来是这样的:
public class Brick {
public static final int BWIDTH = 60;
public static final int BHEIGHT = 20;
private int xPos, yPos;
private Level brickLevel;
//This sets up the different levels of bricks.
enum Level{
LUNATIC (4, 40, Color.MAGENTA),
HARD (3, 30, Color.PINK),
MEDIUM (2, 20, Color.BLUE),
EASY (1, 10, Color.CYAN),
DEAD (0, 0, Color.WHITE);
private int hitpoints;
private int points;
private Color color;
Level(int hitpoints, int points, Color color){
this.hitpoints = hitpoints;
this.points = points;
this.color=color;
}
public int getPoints(){
return points;
}
public Color getColor(){
return color;
}
}
//rest of brick class goes under the enum
我用它在BreakoutCourt这样的:
//Generates the bricks.
for(int i = 0; i < 8; ++i){
ArrayList<Brick> temp = new ArrayList<Brick>();
Level rowColor = null;
switch(i){
//There are two rows per type of brick.
case 0:
case 1:
rowColor = Level.EASY;
break;
case 2:
case 3:
rowColor = Level.HARD;
break;
case 4:
case 5:
rowColor = Level.LUNATIC;
break;
case 6:
case 7:
default:
rowColor = Level.MEDIUM;
break;
}
for(int j = 0; j < numBrick; j++){
Brick tempBrick = new Brick((j * Brick.BWIDTH), ((i+2) * Brick.BHEIGHT), rowColor);
temp.add(tempBrick);
}
我在做什么错?感谢您的帮助!
答
如果要导入班级的成员,则需要使用static import。所以你可以这样做:
import static Brick.Level;
虽然要小心。静态导入应谨慎使用,正如该链接页面所述。没有静态导入的另一种方法是使用外部类名称。例如:Brick.Level.LUNATIC
原因是在一个较大的项目中,可能有多个具有Level枚举的类,并且您必须查看导入以查看正在使用哪个类。
嗯,我还得到一个进口不能得到解决。枚举应该在公共课上,对吗? – flymonkey 2012-04-25 13:17:46
在Brick.java的顶部是否有包声明? – ricochet1k 2012-04-25 15:42:06