A
クラス、、、およびB
を使用する素敵な小さなJavaプロジェクトがあると仮定します。オブジェクト、そのメソッドまたは属性にアクセスするには、オブジェクトへのリンク(インスタンスIDまたは参照)が必要です。vmcurrentクラスにクラスのインスタンスを作成しただけなら簡単です。C
D
クラスでA
:
B bi = new B();
を使用して、クラス内のクラスbi
によって提供されるすべてのプロパティとメソッドにアクセスできます。B
A
しかし、私がB
今クラスにいるとき:
C ci = new C();
もちろん、クラスでは/B
によって提供されるすべてにアクセスできます。しかし、 /を利用する方法は?利用可能なオブジェクト参照はありません。新しいものを作成するだけでは役に立ちません。データの異なるワーキングセットの追加インスタンスです。C
ci
C
ci
A
C
私は2つの方法を見つけました。
C
byから必要なものはすべてA
カプセル化され、 /B
を介して呼び出されます。欠点は明らかです。B
bi
私は初期の
FORTRAN
経験に戻り、Common
エリアを作成しました。純粋に静的なクラス。B
を作成する場合はci
、次のような領域に参照をコピーします。C ci = new C(); Common.ci = ci;
A
今では使い やすいですC
/ ci
:
クラスでA
:
Common.ci.setValue("Value");
有名なペイント方法でも、非常によく似た問題が発生しました。
protected void paintComponent(Graphics g)
私がこれまでに見つけたすべての例は、paintメソッド自体でデータを注意深く作成します。しかし、ペイントするデータが外部からのものである場合、どのように処理するのでしょうか?paintメソッドに配列を提供するパラメーターはありません。私は自分のソリューションのような静的な参照を決定しました2
これらの2つの潜在的なソリューションはどれも、私にはインスピレーションを得たり、Javaスタイルに見えたりしません。問題を解決するための経験豊富なJava担当者の解決策は何ですか?