1

クラスを初期化したいのですが、これを行っている間、クラス変数を使用したいと考えています。

このような:

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

それは言う:ローカル変数名が初期化されていない可能性があります。
私の質問は、MyClass が持つすべての機能を AnotherClass に知らせる方法があるかどうかです。

4

3 に答える 3

5

両方のオブジェクトを構築するために相互に要求することはできません。これは機能しないだけでなく、設計が不十分です。

このようなものが本当に必要な場合は、オブジェクト自体を作成します。

Myclass name = new Myclass();

次に、AnotherClass を作成するときに MyClass を渡し、それへの参照を保存します。

name.setAnohterClass(new AnotherClass(name));


より良い設計は、カップリングを減らし、1 つのクラスだけが他のクラスを認識できるようにすることです。例えば:

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 に答える