Java 参数悖论?(不知道如何使用word)
所以我不知道该怎么说,所以我只举一个例子:Java 参数悖论?(不知道如何使用word),java,Java,所以我不知道该怎么说,所以我只举一个例子: public class test { private Object1 o1; private Object2 o2; private Object3 o3; public test() { o1 = new Object1(o2, o3); o2 = new Object2(o1); o3 = new Object3(o1); } } 所以我的问题是,我需要以
public class test {
private Object1 o1;
private Object2 o2;
private Object3 o3;
public test() {
o1 = new Object1(o2, o3);
o2 = new Object2(o1);
o3 = new Object3(o1);
}
}
所以我的问题是,我需要以这些方式给出这3个对象的参数,我会遇到问题,因为当我把o2和o3作为o1时,它们是空的。如果我尝试在o1之上实例化o2和o3,o1为空,问题再次出现。有人能帮我找到解决办法吗。我还想将这3个对象分开,即不给o2或o3一个o1字段。您所面对的
这是你必须不惜一切代价避免的
为了满足您的迫切需要,您可以使构造函数不接受依赖对象,定义集合方法,使用空构造函数创建对象,然后通过将对象传递给这些集合方法将它们连接在一起
public class test {
private Object1 o1;
private Object2 o2;
private Object3 o3;
public test() {
o1 = new Object1();
o2 = new Object2();
o3 = new Object3();
o1.setO2(o2);
o1.setO3(o3);
o2.setO1(o1);
o3.setO1(o1);
}
}
这个问题的简单解决方法是使用方法来初始化,而不是使用构造函数。 定义方法,比如init&使用默认构造函数或无参数构造函数。现在创建所有对象&按正确的顺序对所有对象调用init方法。 你可以在这里再做一件事。让我们看看。。。 您可以使用两个参数定义构造函数&define方法,而不是一个参数构造函数&define方法从两个参数构造函数调用该方法。首先,在Object2和Object3中定义init方法。Object1.的构造函数 现在,创建对象的代码如下所示
public class test {
private Object1 o1;
private Object2 o2;
private Object3 o3;
public test() {
o2 = new Object2();
o3 = new Object3();
o1 = new Object1(o2, o3);
}
}
对于什么样的问题,您需要这种初始化?这是针对需要添加3个相互交互的JPanel的JFrame。首先创建JPanel,然后在构建后将属性放入。否则你无法避免这种循环。此外,构造函数名o1等必须与类名Object1等匹配。。此外,您还应该遵循Java命名约定。我认为这不是一个好的实践。您应该描述您的根本问题,以找到其他解决方案,而不是使用这3个。但如果您需要解决方案,我建议您应该尝试使用get/setter方法,而不是通过构造函数传递对象。@LewBloch啊,是的,我修复了构造函数。在编写此示例时忽略了它。
public class test {
private Object1 o1;
private Object2 o2;
private Object3 o3;
public test() {
o2 = new Object2();
o3 = new Object3();
o1 = new Object1(o2, o3);
}
}