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