2012-04-25 3 views
1

Так что прямо сейчас у меня есть Brick.java, который содержит перечисление Уровней, которое я хочу использовать в BreakoutCourt.java, который содержится в том же пакете, который является (пакетом по умолчанию).Импорт не может быть разрешен?

Когда я пишу import Brick.level; в BreakoutCourt, я получаю сообщение, в котором говорится, что «Импорт кирпича не может быть разрешен». Я получаю это сообщение, даже если я пишу импорт статического 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); 
     } 

Что я делаю неправильно? Спасибо вам за помощь!

ответ

4

Если вы хотите импортировать член класса, вам необходимо использовать static import. Так вы могли бы сделать:

import static Brick.Level; 

Будьте осторожны, хотя. Статический импорт следует использовать экономно, как указано на этой связанной странице. Другой способ сделать это без статического импорта - использовать имя внешнего класса. Например: Brick.Level.LUNATIC Причина в том, что в более крупном проекте у вас может быть несколько классов с перечислением уровня, и вам нужно будет посмотреть на импорт, чтобы узнать, какой из них используется.

+0

Hm, я все еще получаю импорт не может быть решена. Предполагается, что перечисление находится в открытом классе, не так ли? – flymonkey

+0

У вас есть предложение пакета в верхней части Brick.java? – ricochet1k

0

Как вы импортируете Enum?

Вы должны иметь оператор импорта, как

import static Brick.Level 

Связанные question

Смежные вопросы