繁体   English   中英

带有自定义类的BufferedReader的java.lang.StackOverflowError

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM