- PR -

変数(String型)の中にメソッド名が入ってるのですが、

投稿者投稿内容
かつや
ベテラン
会議室デビュー日: 2004/01/19
投稿数: 70
投稿日時: 2004-11-11 16:23
>ClassB のインスタンスを作成するときに、ClassA への参照を渡しとけば?

やはりそれしかないでしょうかねー。。。
そーすると、ClassAのメソッドだけしか呼べなくなるので。。。
ま、ClassCの参照も渡せばいいわけなので、仕様的には満たせるのですが。

できれば、ClassBがメンバになっているClassAの参照をClassB内で取得したいなー。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-11-11 16:33
ごめんなさい、やっと話が見えました。
リフレクションAPIの使い方問題ではないのですね。

それは、参照を渡してやるしかないですよ。
オブジェクト自身から、自分を参照している変数へたどる方法と
いうものは、聞いたことがないです。
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2004-11-11 16:50
素直に ClassB に ClassA と ClassC の参照を渡しておけ、と言いたい。

まあ、でも他の案もテケトーに出すだけ出しておこう。

(1) リスナ作ってイベントモデルにする。ClassB は受信スレッドだっけか。
MethodReceiveListener を作って、ClassA と ClassC はそれを実装する。
ClassB がメソッド名を受信したらファイヤーしちゃってください。

(2) ClassB を匿名内部クラスとして、ClassA の中にインライン実装する。
実は、匿名内部クラスは親インスタンスへアクセスできるのだよ。

コード:
    new ClassB() {
        public void receive(String method) {
            System.out.println(ClassA.this);
            //ClassA.this というのが親インスタンスへの参照。
        }
    };



最後にもう一度言っておくけど、素直に ClassB に ClassA と ClassC の参照を渡しておけ。
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-11-11 16:57
引用:

かつやさんの書き込み (2004-11-11 15:57) より:
何度もすいません。でも、ダメなんです。
プログラムの構成としては、
(略)
こんな感じです。


その構成をかえられないの?
設計のまずさを実装で補おうとしても、あとで余計に泣きをみることになるよ。
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2004-11-11 17:10
引用:

実は、匿名内部クラスは親インスタンスへアクセスできるのだよ。


ごめん。別に匿名である必要はないな。内部クラスなら親を参照できる。
なので、ClassA の内部クラスとして ClassB を実装すればいいんじゃないかな。

スキルアップ/キャリアアップ(JOB@IT)