Android/Java

instanceof의 함정

Superkill 2017. 11. 27. 17:23
반응형
interface Car{
    
}

class Sports implements Car{
    public void speedup(){
        System.out.println("speeeeeeed up!");
    }
}

class Shitty implements Car{
    public void shit(){
        System.out.println("shiiiiiit!");
    }
}

public class MyClass {
    public static void main(String args[]) {
        Car c = new Sports();
        boolean check = c instanceof Sports;
        System.out.println(check); // true
        c.speedup(); //Error
        ((Sports)c).speedup(); // speeeeeeed up!  
    }
}


instanceof 결과가 True가 나오더라도 

그 타입의 멤버에 접근하려면 타입캐스팅을 해주어야 한다.

Car 클래스에 추상 메소드로 speedup()을 선언해주고

Sports, Shitty 클래스에 각각 speedup 메소드를 구현해주면

c.speedup()이 동작하긴 한다.


제너릭으로 해결할 수 있는 방법이 있을까?

'Android > Java' 카테고리의 다른 글

예외의 종류  (0) 2017.11.27