目录
2、简单写一个StackOverflowError的异常,解释原因,如何解决
1、最后输出的是啥?
String s = "hello";
final String str = s;
s = "world";
System.out.println("str = " + str);
答案:hello,扩展,无论是否加final,都是hello
2、简单写一个StackOverflowError的异常,解释原因,如何解决
/**
* InfiniteRecursion
*
* @author ascend
* @date 2018/7/16 17:58.
*/
public class InfiniteRecursion {
@Override
public String toString() {
return " InfiniteRecursion address: " + this + "\n";
}
public static void main(String[] args) {
List<InfiniteRecursion> v = new ArrayList<>();
for (int i = 0; i < 10; i++) {
v.add(new InfiniteRecursion());
}
System.out.println(v);
}
}
编译器尝试将this转换为字符串的时候放生了递归调用,解决方案是,调用super.toString():
@Override
public String toString() {
return " InfiniteRecursion address: " + super.toString() + "\n";
}
看这里,看这里
文章总目录:博客导航