我有一个用Java编写的应用程序。我有3个类mysql_query,tablesetup,table_action。现在,在每个类的类内部,我创建了其他类的对象,这导致递归对象调用。我可以用来解决此问题的替代方法是什么?
例如:
在mysql_query.java我有
公共类mysql_query {
tablesetup tablesetup = new tablesetup();
table_action table_action = new table_action();
}
在tablesetup.java中,我有
公共课程表设置{
mysql_query mysql_query =新的mysql_query();
table_action table_action = new table_action();
}
同样在table_action.java中
公共类table_action {
mysql_query mysql_query =新的mysql_query();
tablesetup tablesetup = new tablesetup();
}
- 编辑 -
就我而言,将一个类对象传递给另一个类的构造函数将不会起作用,因为我有很多这样的依赖类。那么程序员通常如何安排这些类?我可以使用interface
吗?在这种情况下是否适合使用?
最佳答案
在tablesetup
中,您要实例化table_action
在table_action
中,您要实例化tablesetup
我猜您看到了循环-第一个创建了第二个的新实例,第二个创建了第一个的新实例,第二个创建了新的实例,依此类推,直到堆栈(保持方法和构造函数调用)被填满。
进一步说明-当您通过对象的构造函数实例化对象时,其所有字段都将初始化。因此,当实例化table_action
时,将调用new tablesetup()
以便初始化tablesetuptablesetup
变量。
循环依赖不是一件好事,但是您可以拥有它们。创建tablesetup
时,您只需要传递对现有table_action
的引用。
除此之外-您没有使用正确的Java命名。您不应使用小写的类和下划线。专有名称为TableSetup
,TableAction
和MySQLQuery
。除大写字母外,变量名也是如此。它们应该由mysqlQuery
,tableSetup
等组成。