2014-01-30 1 views
0

좋아요. 사각형을 포함하는 모양 arraylist가 있습니다. arraylist에서 그 사각형의 x 좌표를 어떻게 얻을 수 있습니까?모양 배열 목록의 사각형에서 getX()를 어떻게 얻을 수 있습니까?

그래서 여기가 내가 그것을 명확하게하지 않았다고 생각 :

ArrayList<Shape> shapes = new ArrayList<Shape>() ; 

모양 만들기 : 내가 X 얻을 수있는 방법 지금

Shape rec1 = new Rectangle(100,100,200,200); 
shapes.add(rec1); 

을 그래서 여기가 ArrayList에있다 동등 어구? 내가 시도 :

Shape j = (Shape)shapes.get(i); 
j.getX() 

하지만 그건 작동하지 않았다 .. 오류하십시오 Rectangle 아닌 Shape (getX()하지 Shape에서, 클래스 Rectangle에 정의)에 기호를

+0

어떻게 ** ArrayList에서 ** 요소를 가져 옵니까? –

+0

어느 것입니까? 나는 당신이 ArrayList에 그것들을 가지고 있다고 가정합니다. 아마도 [Collections Trail] (http : //docs.oracle.com/javase/tutorial/collections/)을 봐야합니다. – MadProgrammer

+0

목록이 'ArrayList'인 경우 모양을 'Rectangle'로 캐스트해야 할 수도 있습니다. '. –

답변

1

모양은 반드시 하나의 X 좌표가 없습니다. 그 형태는 사각형 그래서 그래서 당신은 당신의 ArrayList를 변경할 수 있습니다 :

ArrayList<Rectangle> shapes = new ArrayList<Rectangle>(); 

아니면 getBounds와 경계를 얻을 수 있습니다 :이 기본적으로 자신의 복사본을 생성하지만, 구형의

Shape s = shapes.get(i); 
double x = s.getBounds().getX(); 

을 당신은에있는 경우 당신이 실제로 선택할 수없는 다른 모양을 포함하십시오 (어떤 종류의 사례 별 캐스팅 제외).

+0

야, getBounds()는 내가 고마워했던 것을 정확히 찾고 있었다! – user3250769

+0

@ user3250769 여러분을 환영합니다. 미래에는 API 문서가 이런 종류의 일에 매우 유용합니다. ;) – Radiodef

1

캐스트 개체를 찾을 수 없습니다

Rectangle r = (Rectangle) shapes.get(i); 
r.getX(); 

그러나 이것은 당신이 원하는 아마되지 않습니다 : 당신이 Rectangle의있을 것 Shape의의 목록이 아닙니다 그들 모두있는 경우. 당신은 객체가 Rectangle 여부를 사용하기 전에 여부를 확인할 수 있습니다

Shape j = (Shape) shapes.get(i); 
if (j instanceof Rectangle) { 
    ((Rectangle) j).getX(); 
}