我想初始化一个类,在这样做时我想使用classvariable。
像这样:Myclass name = new Myclass(new AnotherClass(name));
它说:本地变量名称可能尚未初始化 所以我的问题是,是否有办法让AnotherClass知道MyClass的所有函数。
答案 0 :(得分:5)
您不能让两个对象相互要求构建它们。这不会起作用,这不仅是糟糕的设计。
如果你真的需要这样的东西,可以单独创建对象:
Myclass name = new Myclass();
然后当你创建AnotherClass时,将它传递给MyClass并让它保存对它的引用。
name.setAnohterClass(new AnotherClass(name));
更好的设计是减少耦合,只让一个人知道另一个。例如:
Myclass name = new Myclass();
AnotherClass another = new AnotherClass(name);
答案 1 :(得分:1)
如果你想让其他类只知道函数(不是对象状态),你可以使用带有deault构造函数的其他对象来实现它:
Myclass tmpObject = new Myclass();
Myclass name = new Myclass(new AnotherClass(tmpObject));
但我也建议您查看AnotherClass
。目前尚不清楚您要使用哪种功能,可能您可以使用它们static
,因此您不应将它们传递给Myclass
对象。
答案 2 :(得分:1)
尝试
Myclass name = new Myclass(new AnotherClass(new Myclass()));
问题是您正在尝试从源对象name
本身初始化对象name
。这是不可能的,你现在就知道了。
如果你想实现,你可以按照上面的方式去做。