サブクラスがクラスのインスタンスであるかどうかを実行時に確認する方法は?[重複しています]。
2023-09-22 13:34:48
質問
アンドロイドアプリのテストスイートで、このようなクラスがあります。
B
はビューです。
public class A extends B {
... etc...
}
これで、ビューオブジェクトのリストができあがりました。
A
オブジェクトを含むかもしれませんが、この場合、サブクラスか "instances of" かだけを気にしています。
B
. というようなことをしたいのです。
ArrayList<View> viewList = getViews();
Iterator<View> iterator = viewList.iterator();
while (iterator.hasNext() && viewList != null) {
View view = iterator.next();
if (view.getClass().isInstance(B.class)) {
// this is an instance of B
}
}
問題は
if
に遭遇したときに
A
のインスタンスとは評価されません。
B
と評価されません。どうにかして
isSubclassOf
などにする方法はありますか?
どのように解決するのですか?
このメソッドについては、APIをよく読む必要があります。すぐに混乱してしまうことがあります。
どちらかです。
if (B.class.isInstance(view))
APIによると が、その 指定されたオブジェクト (パラメータ) で表されるオブジェクトと代入互換性があります。 このクラス (メソッドを呼び出す先のクラスオブジェクト)
または
if (B.class.isAssignableFrom(view.getClass()))
APIによると この クラスオブジェクト で表されるクラスやインターフェースが、そのクラスやインターフェースと同じか、スーパークラスかスーパーインターフェースであるかどうかを判定します。 指定されたクラス・パラメータ
または(リフレクションなしで、推奨されるもの)。
if (view instanceof B)
関連
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み] instanceofを呼び出す前にnullチェックは必要ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
Javaジェネリックを1つの記事で
-
java.sql.SQLException: 結果セットの開始前
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
配列定数は初期化子でのみ使用可能です。
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
テストが空であるかどうかを判断するためのオプションの処理
-
[解決済み】Javaでクラスオブジェクトが他のクラスオブジェクトのサブクラスであるかどうかを確認する