2013년 9월 2일 월요일

자바 ArrayStoreException

ArrayStoreException

Point 클래스를 Circle, Rectangle이 상속 받았다고 했는데 이럴 경우 Circle[], Rectangle[] 배열도 Point[] 배열의 하위 클래스가 된다고 하였습니다.

Circle[] c = new Circle[10];
……
Point[] p = c;

그럼, 다음과 같은 경우는 어떨까요?

Circle[] c = new Circle[10];

Point[] p = c;

//p는 Point,형이지만 실제 Circle 인스턴수가 들어 있습니다.
p[0] = new Rectangle(); 

문법적으로 Rectangle이 Point의 하위 클래스 이므로 컴파일 시에는 문제되지 않지만 실제 p라는 배열에는 Circle이 들어 있으므로 실행시 p[0] = new Rectangle(); 부분에서 ArrayStoreException이 발생 합니다.

오라클자바커뮤니티 실무 전문 강좌


댓글 없음:

댓글 쓰기