前提・実現したいこと
初歩的な質問です。
あるインスタンスが特定のクラスから生成されたインスタンスであるか判定する方法として、 instanceof
のようにシンプルにコードを書けるようにしたいです。
発生している問題・エラーメッセージ
クラス C を継承したクラス E のインスタンス e が、クラス A, B, C, D と比較したときは false
、クラス E と比較したときは true
を返す(つまりinstanceof
とは違って、クラスが一致したときだけ、true
を返す)コードを書きたいです。
該当のソースコード
java
1class A {} 2class B extends A {} 3class C extends B {} 4class D extends C {} 5class E extends C {} 6 7public class Main { 8 public static void main(String[] args) { 9 E e = new E(); 10 System.out.println(e.getClass().equals(A.class)); // -> false 11 System.out.println(e.getClass().equals(B.class)); // -> false 12 System.out.println(e.getClass().equals(C.class)); // -> false 13 System.out.println(e.getClass().equals(D.class)); // -> false 14 System.out.println(e.getClass().equals(E.class)); // -> true 15 } 16}
もともと、 instanceof
を使用していましたが、
事情が変わって、そのインスタンスが指定したクラスと一致するときだけ true
する必要になりました。
親クラスもちゃんと false
になるようにしたいです。
上のようなソースコードを思いつきました。
しかし、もっと instanceof
ようにシンプルに書けないか調べてみましたが、
見つからないため、質問しています。
OBJ09-J. クラス名を比較するのではなくクラスを比較するにはオブジェクト x と y が同じクラスかどうか調べる方法がありました。しかし、オブジェクト x が クラス Y から生成されたインスタンスかどうか調べる方法はありませんでした。
instanceof
ほどではなくても、上より綺麗に書く方法があったらご教示下さい。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
OS: Windows 10
Java: dokojava v2
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/23 06:30