July 28, 2020
IntSequence sequence = ...;
DigitSequence digits = (DigitSequence) sequence;
System.out.println(digits.rest());
주의할 점은 객체는 실제 클래스나 그 슈퍼타입으로만 캐스트할 수 있다. 잘못 캐스트하면 컴파일 시간 오류나, 클래스 캐스트 예외(ClassCastException)가 발생한다.
String digitString = (String) sequence; // 불가능하다 IntSequence는 String의 슈퍼타입이 아니다.
RandomSequence randoms = (RandomSequence) sequence; // 작동 가능성은 있지만, 불가능하면 클래스 캐스트 예외를 던진다.
object instanceof Type
if(sequence instanceofe DigitSequence) {
DigitSequence digits = (DigitSequence) sequence;
}
이 표현식은 object가 Type을 슈퍼타입으로 둔 클래스의 인스턴스일 때 true를 반환한다.
public interface Closeable {
void close();
}
pucblic interface Channel extends Closeable {
boolean isOpen();
}
public class FileSequence implements IntSequence, Closeable {
...
}
public interface SwingConstantss {
int NORTH = 1;
int NORTH_EAST = 2;
int EAST = 3;
}