2016-06-22 16 views
0

私はJavaの学習の初心者です。私はJavaの基礎を学ぶためにメモ帳を使用しています。別のjavaファイル(ただし同じディレクトリ内)に、誰かが私にこれを行う方法を教えてもらえますか?Javaは別のJavaファイル内のクラスのシンボルを同じディレクトリに見つけることができません

たとえば、同じディレクトリに2つのjavaファイルがあり、1つはShape.java、もう1つはBoard.javaです。私のShape.javaでは、私はTetrominoesというクラスを持っていますが、今私のBoard.javaでどのようにこのTetrominoesクラスを使用しますか?私は、インポートShape.Tetrominoesを使用して動作しません知っている。

以下、私が話しているクラスに関連するコードのいくつかを掲載しました。

Shape.java

public class Shape { 
    protected enum Tetrominoes { NoShape, OtherShape }; 
    private Tetrominoes pieceShape; 

    public Shape() { 
     setShape(Tetrominoes.NoShape); 
    } 

    public void setShape(Tetrominoes shape) { 
     // Codes... 
    } 

    public Tetrominoes getShape() { return pieceShape; } 

} 

Board.java

public class Board extends JPanel implements ActionListener { 
    private Tetrominoes[] board; 

    public Board(Game parent) { 
     initBoard(parent); 
    } 

    // and other codes... 
} 

すべてが指して "シンボルを見つけることができない" と言い、このエラーを除いて、結構です "プライベートTetrominoes []ボード;"

これはなぜですか?これをどのように修正する必要がありますか?前もって感謝します。不明な点や投稿が必要なことがあれば、すぐに質問を更新してください。

+0

代わりにIDEを使用すると、プログラミングの作業が簡単になり、苦痛を軽減します。 –

+0

'private Tetrominoes [] board;の代わりに' private Shape.Tetrominoes [] board;を使用してください。 – Jesper

答えて

4

Tetrominoes enumはShapeにネストされています。だから、としてそれを参照することができます:

private Shape.Tetronminos[] board; 

...しかし、あなたは私の見解では、トップレベルの型にそれを推進したほうが良いと思います。また、Tetromino(単数)と呼んで、値の名前をJavaの命名規則(NO_SHAPEOTHER_SHAPE)に従うことをお勧めします(ただし、それらは実際の値ではないと仮定しています)。

+0

@AndrewTobilko:いいパッケージです。 http://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html#jls-6.6.2 –

+0

を参照してください。私は同じパッケージから出ていることを忘れています。+1 – Andrew

+0

ああ大丈夫です、ありがとう、そのトリックでした。だから私は常にそれをShape.Tetrominoesに参照する必要がありますクラスを使用するたびに?私は、Shape.Tetrominoesをインポートするのが好きで、ちょうどIDEのようにTetrominoesと呼ぶことはできません。 – Charas

関連する問題