看到标题,很多朋友会很纳闷,这么初级的问题,还用讨论吗?eclipse里面编译不通过呀。。。其实,里面另有玄机...
答案是执行不会报错。
现在写下我的复原过程,供大家参考。
总共A、B和Main三个类,A中注入B类,两类中各有print1和print2方法,A的print1调用B的print1,print2调用B的print2,Main只调用A的print1方法。然后整体编译,编译后的class放到新文件夹中,此时执行Main,输出print1的结果。然后只删除B类中的print2方法,将编译好的B类替换原来的B类,执行Main,输出print1的结果。结果不报异常。我把代码贴出来,方便大家理解(类反编译后的代码)。
类A:
public class A
{
private B b;
public B getB()
{
return this.b;
}
public void setB(B b)
{
this.b = b;
}
public void print1() {
this.b.print1();
}
public void print2() {
this.b.print2();
}
}
类B:
import java.io.PrintStream;
public class B
{
public void print1()
{
System.out.println(1);
}
}
类Main:
public class Main
{
public static void main(String[] args)
{
A a = new A();
B b = new B();
a.setB(b);
a.print1();
}
}