1.异常返回值
我们知道异常的框架如:
try{
//异常代码
}catch() {
}finally{
}
代码是最好的说明:
public class ExpRetVal {
public static int func() {
try{
throw new Exception(){};
}catch(Exception e) {
return 0;
}finally {
return 1;
}
}
public static void main(String[] args) {
System.out.println(func());
}
}
在catch中我捕获异常,返回0,然后我在finally我返回1,到底返回0还是1?返回值可以覆盖吗?
输出是1,很有意思,结论告诉我们返回值是可以覆盖的。
finally总是在return之前被执行,如果finally中返回值,就直接返回。
2.递归的一点点思考
有这样的情况,给出一个包名(例如org.ljh.reflect,此处给出包名org),我要遍历包下所有的.class文件,如果找到我就返回一个true,说明有这个类的字节码,然后我通过反射实例化这个类。凑合着看下伪代码:
public boolean exist(String packageName) {
if("在这个包找到了") {
return true;
}else{
exist("当前包名");
}
return false;
}
结果不确定了,可能是true,也可能是false,这就是因为递归引起的覆盖,怎么解决,通过静态成员变量的方式(静态成员变量在类范围,不在对象范围,每个对象共享):
static boolean isExist = false;
public boolean exist(String packageName) {
if("在这个包找到了") {
isExist = true;
}else{
exist("当前包名");
}
return isExist;
}
初学者发帖,大牛勿喷,不足之处多多指正。