[英]StackOverflowError caused by class declaring subclass?
我正在使用一个类和一些子类的项目中。 当我声明Database
类时,出现以下错误:
Exception in thread "main" java.lang.StackOverflowError
at data.DatabaseConnectionHandler.<init>(DatabaseConnectionHandler.java:12)
at data.Database.<init>(Database.java:18)
最后两行重复大约10000次。
Database
是我的父类,而DatabaseConnectionHandler
是子类。 在Database
类中,我声明了DatabaseConnectionHandler
一个实例,我认为这可能是原因,但我不知道为什么。
Database
类:
public class Database {
protected static Connection connection = null;
protected static Statement statement = null;
protected static ResultSet resultSet = null;
DatabaseConnectionHandler DBCH = new DatabaseConnectionHandler(); //Line 18
Registration regis = new Registration();
public Database() throws SQLException {
DBCH.openConnection();
}
和DatabaseConnectionHandler
类:
public class DatabaseConnectionHandler extends Database {
private final String URL = "jdbc:mysql://localhost:3306/foo_bar";
private final String USERNAME = "foo";
private final String PASSWORD = "bar";
public DatabaseConnectionHandler() throws SQLException {} //line 12
protected void openConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
connectionStatus = true;
} catch (SQLException | ClassNotFoundException exe) {
System.out.println(exe);
connectionStatus = false;
}
}
是Database()
声明DatabaseConnectionHandler()
导致此错误? 如果是这样,我该如何解决?如果不是,那是什么引起了问题,又该如何解决?
创建Database
,还创建了DatabaseConnectionHandler
:
public class Database {
//...
DatabaseConnectionHandler DBCH = new DatabaseConnectionHandler();
//...
}
而DatabaseConnectionHandler
是一个Database
:
public class DatabaseConnectionHandler extends Database {
//...
}
因此,创建Database
需要创建Database
。 这是无限递归。
您有两种选择:
DatabaseConnectionHandler
时不要创建Database
DatabaseConnectionHandler
本身成为Database
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.