起因我想要繼承某個api framework, 替他增加某些Method, 但是現在做不下去,
所以做一個testcase,
如果我先upcast, 然後要用到ring再downcast, 可以成功, 但是我不喜歡這作法
phone pp = (phone) new android();
pp.run();
((android)pp).ring();
我想要這樣做 ,但是在 b= (android)new phone(); 這一行,
會出現 java.lang.ClassCastException: phone cannot be cast to android
android b= (android)new phone();
b.run();
b.ring();
請問版上高手, 如何帥帥地向下轉型?
原始馬
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class extend {
@Test
public void extendDownCast(){
android b = new android();
if (b instanceof phone) {
b= (android)new phone();
b.ring();
}
}
}
class phone {
public void run() {
System.out.print("run");
}
@Override
public boolean equals(Object o) {
if(!(o instanceof phone)) return false;
return true;
}
}
class android extends phone {
public void ring() {
System.out.print("ring");
}
}