1

我想初始化一个类,同时我想使用类变量。

像这样:

Myclass name = new Myclass(new AnotherClass(name));

它说:局部变量名称可能尚未初始化。
所以我的问题是,是否有办法让 AnotherClass 知道 MyClass 的所有功能。

4

3 回答 3

5

您不能让两个对象相互要求来构造它们。这不仅行不通,而且设计不佳。

如果您真的需要这样的东西,请自行创建对象:

Myclass name = new Myclass();

然后,当您创建 AnotherClass 时将其传递给 MyClass 并让它保存对它的引用。

name.setAnohterClass(new AnotherClass(name));


更好的设计是减少耦合,让一个类知道另一个类。例如:

Myclass name = new Myclass();
AnotherClass another = new AnotherClass(name);
于 2013-10-18T11:56:59.887 回答
1

如果您想让其他类只知道函数(而不是对象状态),您可以使用带有默认构造函数的其他对象来实现:

Myclass tmpObject = new Myclass();
Myclass name = new Myclass(new AnotherClass(tmpObject));

但我也建议审查AnotherClass。这不清楚你想使用什么功能,可能你可以使用它们static,所以你不应该将它们传递给Myclass对象。

于 2013-10-18T12:00:10.430 回答
1

尝试

Myclass name = new Myclass(new AnotherClass(new Myclass()));

问题是您正在尝试name从源对象name本身初始化对象。这是不可能的,你现在知道了。

如果你想实现,你可以按照上面的方法来做。

于 2013-10-18T12:01:32.147 回答