プロが教えるわが家の防犯対策術!

こんにちは。呼び出し先で静的メンバメソッドA()を呼び出すとき、引数にA(クラス名)と渡すようにしたいのですが、どうやってその静的メンバを作れば良いのですか?

呼び出し時
A(クラス名)

定義時
public static boolean A(※引数) {
}

「※引数」の部分をどう書いたらよいのですか?

質問者からの補足コメント

  • うーん・・・

    commons-langの「EqualsBuilderクラス」を自作したいということです。そのために引数にクラス名を指定してもらう必要があるのです。
    でも、ObjectとClassは比較できないですし、Objectインスタンスを取得してgetClass()でクラス名を取得しようとしてもできないのです。ほかに良い方法も思いつかないので、引数にクラス名を取得してもらう必要があるのです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/04/16 01:41

A 回答 (2件)

>getClass()でクラス名を取得しようとしてもできないのです。



getClass().getName() とか getClass().getSimpleName()では
ダメということですか?
    • good
    • 1
この回答へのお礼

つらい・・・

回答ありがとうございました。結局、比較が出来ないうえ代替案も思い浮かばなかったので制作を諦めました。

お礼日時:2016/04/17 00:33

うーん、とりあえず A() の中で何をやりたいのでしょうか?


そもそも、 A() の中で欲しいのはそのクラスでしょうか、そのクラスの何らかのメソッドの実行結果でしょうか?

もしそのクラス名のクラスを生成して何らかの処理をしたいというのなら、単に String で書いたクラス名を渡してメソッド中で if 文なり switch 文を使って渡された文字列に応じて生成処理を振り分ければいいだけです。

それ以外の場合では問題のクラスのインスタンスを渡してやれば呼び出し先で instanceof 演算子や getClass() メソッドを使ってそのクラスが何者なのかに応じた処理を行うことはできます。
# もっともその手を使うよりも、ポリフォーリズムを使ってクラス依存の処理をそのクラスに移譲する方がすっきりするのですが。

メソッドで使用しようとしている問題のクラス群が継承関係で親子兄弟になっていなく共通して実装しているインターフェースもない、という場合でもメソッドのオーバーロードで何とかすることはできます。

上記の内でどの手法が適切かはあなたが直面している状況によります。ですので、なぜクラス名をメソッドに渡す必要が生じたか、その状況を補足願います。
この回答への補足あり
    • good
    • 0
この回答へのお礼

つらい・・・

回答ありがとうございました。No2さんの回答をいただいたのですが、比較が出来ずそれに代わる代替案も思い浮かばなかったので制作を諦めました。

お礼日時:2016/04/17 00:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!