[解決済み】Javaでクラスオブジェクトが他のクラスオブジェクトのサブクラスであるかどうかを確認する
質問
私はJavaのリフレクションAPIで遊んでいて、いくつかのフィールドを処理しようとしています。今、私はフィールドのタイプを識別することに行き詰っています。文字列は簡単で、ただ
myField.getType().equals(String.class)
. 他の非派生クラスも同様です。しかし、派生クラスはどのようにチェックすればよいのでしょうか?例えば
LinkedList
のサブクラスとして
List
. を見つけることができません。
isSubclassOf(...)
または
extends(...)
メソッドを使用します。すべての
getSuperClass()
を作成し、自分自身でスーパークラスを見つけることができますか?
どのように解決するのですか?
この方法が欲しい。
boolean isList = List.class.isAssignableFrom(myClass);
一般的なところでは
List
(上記)は、次のように置き換える必要があります。
superclass
と
myClass
に置き換える必要があります。
subclass
から JavaDoc :
で表されるクラスまたはインタフェースが、 この
Class
オブジェクトが表すクラスやインタフェースと同じであるか、またはそのスーパークラスやスーパーインタフェースであることを示します。Class
パラメータを使用します。このパラメータはtrue
を返し、そうでない場合はfalse
. もしこのClass
オブジェクトがプリミティブ型を表している場合、このメソッドはtrue
を指定した場合Class
パラメータは、まさにこのClass
オブジェクトを返し、それ以外の場合はfalse
.
参考にしてください。
関連する
a) コンパイル時に知っているクラスまたはインターフェース(サブクラスを含む)のインスタンスであるかどうかをチェックする。
boolean isInstance = someObject instanceof SomeTypeOrInterface;
例
assertTrue(Arrays.asList("a", "b", "c") instanceof List<?>);
b) Objectが、実行時にしか分からないClassやInterface(サブクラスも含む)のインスタンスであるかどうかを確認する。
Class<?> typeOrInterface = // acquire class somehow
boolean isInstance = typeOrInterface.isInstance(someObject);
例
public boolean checkForType(Object candidate, Class<?> type){
return type.isInstance(candidate);
}
関連
-
[解決済み] Java - JTextFieldが空かどうかを確認する
-
[解決済み] JAVA_OPTIONS、JAVA_TOOL_OPTIONS、JAVA_OPTSの違いについて
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] android.support.v4.app.FragmentActivity' で 'TAG' がプライベートアクセスされている。
-
[解決済み] Java UnknownFormatConversionException
-
[解決済み] Java Swingで複数のボタンに対して複数のActionListenersを追加する方法
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] java.util.MissingFormatArgumentException: 形式指定子 '%s' がありません。
-
[解決済み] タイプの安全性。アンチェック・キャスト
-
[解決済み] Eclipseでクラスとそれに対応するファイルの名前を変更する方法は?