アプリ版:「スタンプのみでお礼する」機能のリリースについて

あるクラスが特定のクラスである事を確認する方法が知りたいです。

例えば下記のようにCクラスがBクラスを継承し、BクラスがAクラスを継承していた場合。
あるメソッドでAクラスの引数を受け取ったが、これがAクラスであるかどうかを判別したいです。(BではなくかつCではない)
instanceofを使用し、Cでfalse、Bでfalseと判別する方法以外でありましたらお願いします。

Aクラス
..|
..+--Bクラス
......|
......+--Cクラス

A 回答 (2件)

判別方法については、instanceofを使って一つ一つチェックするか、getClass().getName()で文字列判定をするか、が一般的だと思います。

あとはクラスごとにstaticな値をIDとしてつけてやってそれで判定するとか、泥臭い手段ならいろいろあるでしょう。

ただそれよりも、「オブジェクトがAのインスタンスであると確認する必要がある」という状況が気になります。継承関係がちゃんと「is a」の関係になっているかどうか、つまり設計に無理がないかをまず確認してもいいかもしれませんね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
getClass().getName()で判定することにしました。

状況については説明が難しいですが、かなり特殊な処理なので。。。
(勿論設計に問題がない訳ではないですがw)

お礼日時:2009/10/29 12:20

B でなければ C でないのは明らかなので, 実は「C でない」という判定は不要ですね.


それ以外には思いつかない.

この回答への補足

回答ありがとうございます。

こちらで調べてみたところ下記のようにClassのgetNameを使用する事で判別ができることがわかりました。
後、とりあえずキャストしてみてtrycatchとかでもできそうです。
綺麗じゃないですが。。。

Class tmpclass = hoge.getClass();
if ((new A().getClass().getName().equals(tmpclass.getName()))) {
break;
}

補足日時:2009/10/27 11:46
    • good
    • 0

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