我有一个用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命名。您不应使用小写的类和下划线。专有名称为TableSetupTableActionMySQLQuery。除大写字母外,变量名也是如此。它们应该由mysqlQuerytableSetup等组成。

10-06 01:26