[英]java.lang.StackOverflowError for BufferedReader with custom class
这是我制作的自定义类:
class BufferedReader{
BufferedReader inClient = null;
public BufferedReader(InputStreamReader stream) {
inClient = new BufferedReader(stream); //points the stackoverflow on this line
}
public String readLine(){
return inClient.readLine();
}
}
因此,当我尝试如下所示访问它时,我最终得到了stackoverflow:
BufferedReader[] inClient = new BufferedReader[2];
//using a socket here
inClient[0] = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
知道为什么会这样吗?
这会给您一个StackOverflowError
因为您使用的命名使您无法控制递归。 构造函数将继续调用自身,直到堆栈溢出为止。
在构造函数中,您将重新分配您的类的新实例,这将无限期地重新分配您的类的新实例...直到达到生成StackOverflowError的最大堆栈大小为止。
您应该重命名您的类,以免与Java中的类混淆,或者如果您想保留名称,则必须在构造函数和属性定义中使用JDK类的全名:java.io.BufferedReader
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.