1

私はJavaに比較的慣れていません...

長方形の配列と、リストのいくつかの長方形で満たされたスタックを取得しました

int listNr;

Rectangle[] list = new Rectangle[100];
LinkedList stack = new LinkedList();

public void fillList(){
    for (int i = 0; i < list.length; i++){
        list[i] = new Rectangle(10,10);    
    }     
}

public void fillStuff(){
    stack.add(list[listNr]);
}

リストから Rectangle の座標にアクセスするには、「getX()」メソッドを呼び出します

list[listNr].getX();

これは x 値を返します。

しかし、スタックを介して Rectangle の x 座標にアクセスしたいのですが、どうすればよいですか?

これが機能しない理由がわかりません:

stack.peek().getX();

私の場合、スタック[i]と配列[i]は同じオブジェクトを参照するといつも思っていました...

 System.out.println("stack "+stack.peek());
 System.out.println("list "+list[listNr]);

同じ出力が得られます: " list Rectangle@863d22 " および " stack Rectangle@863d22 "

同じオブジェクトを参照する場合、オブジェクトのメソッド (getter や setter など) を使用できるべきではありませんか? または、ここで論理的な誤りを犯していますか?

4

1 に答える 1

3

ジェネリックを使用する必要があります:

LinkedList<Rectangle> stack = new LinkedList<Rectangle>();

これにより、LinkedList に Rectangles が含まれることが Java に通知されます。Rectangle 以外のものを挿入しようとすると、コンパイル エラーが発生します。Javaはsstackのみを含むことを (コンパイル時に) 判断できるため、(コンパイル時に) .RectanglegetX()stack.peek()

于 2012-04-09T16:34:36.460 に答える