'캐스팅'에 해당되는 글 1건

  1. 2007/05/15 캐스팅

캐스팅

분류없음 2007/05/15 12:24 posted by 낭만검객

아래 코드처럼 인터페이스 Lockable 형 변수 lock에 포조(POJO) 클래스 User를 할당하면 컴파일 할 때 에러가 발생할까요?

public class User {

}
public interface Lockable {

}
User user = …;
Lockable lock = (Lockable) user;

에러가 발생하지 않습니다.

JLS(Java Language Specification)에 따르면, 좌변(Lockable)이 인터페이스이고 우변(User)이 클래스일 때 우변(User)이 final 이 아니고 템플릿 파라미터가 다른 제네릭이 아니라면, 컴파일 시에는 허용한다고 합니다.

우변(User)의 서브 클래스가 좌변을(Lockable)을 구현하면 위 캐스팅은 올바르기 때문입니다.

public class Student extends User implements Lockable {

}
User user = new Student();
Lockable lock = (Lockable) user;

믹스인(Mixin)을 공부하며 덤으로 얻은 지식! ^^