一个有意思的BUG 分析疑惑
祈_福 2017-11-18 11:39:49 假设一种场景,a模块中调用b模块中某对象的某方法。如果b模块中的该方法返回值类型发生了改变,
那么a模块在运行的时候会抛出java.lang.NoSuchMethodException找不到方法异常 还是 java.lang.ClassCastException类型转换异常。
A模块:
public class A_Class(){
public void A_Method(){
b.B_Class bc = new b.BClass();
int a = bc.add("hello");
}
}
B模块:
public class B_Class(){
public String B_Method(String str){
return str;
}
}
补充:不要说A模块中的方法编译就不通过,是以目前的代码看A模块中的代码是不通过编译,无法执行的。
但是如果B模块中的B_Method方法第一版本的返回值是int类型,A模块经过了编译可以正常执行。
若B模块在没有通知A模块的情况下将方法的返回值改变了。那么A是原来已经编译好的class。这个时候运行
你觉得会抛出哪种异常。
是直接找不到方法,还是方法会执行,但是类型转换会发生异常?
欢迎各位大神 指导