起因我想要继承某个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");
}
}