2016-06-22 5 views
0

Ich bin ein Anfänger in Java zu lernen, und ich benutze Notizblock, um meine Grundlagen in Java zu lernen, und ich kann nicht scheinen, die Klasse zu verwenden, die ich habe Könnte mir jemand in einer anderen Java-Datei (aber im selben Verzeichnis) beibringen, wie man das macht?Java kann kein Symbol für Klasse in einer anderen Java-Datei finden, aber im selben Verzeichnis

Zum Beispiel, im selben Verzeichnis habe ich 2 Java-Dateien, eine heißt Shape.java, eine andere ist Board.java. In meinem Shape.java habe ich eine Klasse namens Tetrominoes, wie benutze ich nun diese Tetrominoes-Klasse in meinem Board.java. Ich weiß, Import Shape.Tetrominoes wird nicht funktionieren.

Unten habe ich einige der Codes geschrieben, die mit der Klasse verbunden sind, über die ich spreche.

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... 
} 

Alles ist in Ordnung, außer für diesen Fehler, der "nicht finden können, das Symbol" zeigen auf, sagt "privater Tetrominoes [] board";

Warum ist das? und wie soll ich das beheben? Vielen Dank im Voraus. Bitte frag mich, wenn etwas unklar ist oder was ich sonst noch posten musste, werde ich meine Frage so schnell wie möglich aktualisieren.

+0

Verwenden Sie stattdessen eine IDE - das Programmieren wird dadurch einfacher und weniger schmerzhaft. –

+0

Anstelle von 'privaten Tetrominoes [] board;' private 'Shape.Tetrominoes [] board;' – Jesper

Antwort

4

Ihre Tetrominoes Enum ist in Shape verschachtelt. So Sie könnte darauf verweisen, wie:

private Shape.Tetronminos[] board; 

... aber Sie wären besser dran, es zu einem Top-Level-Typ zu fördern, meiner Meinung nach. Ich würde auch vorschlagen, es Tetromino (singular) zu nennen und die Wertnamen den Java-Namenskonventionen zu folgen: NO_SHAPE und OTHER_SHAPE (obwohl ich annehme, dass diese nicht die wirklichen Werte irgendwie sind).

+0

@AndrewTobilko: Nein, weil es im selben Paket ist. Siehe http://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html#jls-6.6.2 –

+0

oh, ich habe verpasst, dass sie aus dem gleichen Paket sind, +1 – Andrew

+0

Ah okay Danke, das hat den Trick gemacht. Also muss ich IMMER immer auf Shape.Tetrominoes verweisen, um die Klasse zu benutzen? Es gibt keine Möglichkeit für mich, Shape.Tetrominos zu importieren und es nur Tetrominos zu nennen, genau wie in IDE? – Charas