interface Ex11Interface {
void say(String s);
}class Inner implements Ex11Interface {
public void say(String s) {
System.out.println(s + s);
}
public void run(){
System.out.println("run");
}
}class Test {
private class Inner implements Ex11Interface {
public void say(String s) {
System.out.println(s);
}
public void run(){
System.out.println("run");
}
}
Ex11Interface f() {
return new Inner();
}
}
public class EX11 {
public static void main(String[] args) {
Test t = new Test();
t.f().say("hi");
((Inner)t.f()).say("hello");
}
}
编译问什么能成功,而运行不行?
void say(String s);
}class Inner implements Ex11Interface {
public void say(String s) {
System.out.println(s + s);
}
public void run(){
System.out.println("run");
}
}class Test {
private class Inner implements Ex11Interface {
public void say(String s) {
System.out.println(s);
}
public void run(){
System.out.println("run");
}
}
Ex11Interface f() {
return new Inner();
}
}
public class EX11 {
public static void main(String[] args) {
Test t = new Test();
t.f().say("hi");
((Inner)t.f()).say("hello");
}
}
编译问什么能成功,而运行不行?
Ex11Interface f() {
return new Inner();
}
代码里的类是Test中的内部类.((Inner)t.f()).say("hello"); 中Inner是外部类Inner两者除了实现同一接口外,还有什么地方相同,根本就是不同的类怎么转换?
Inner这个类存在,那么你向这个类强制转换时,肯定会出现
ClassCastException类转换异常。