[解決済み】java.util.Listのジェネリックタイプを取得する。
2022-03-30 07:25:26
質問
あります。
List<String> stringList = new ArrayList<String>();
List<Integer> integerList = new ArrayList<Integer>();
リストの総型を取得する(簡単な)方法はありますか?
どのように解決するのですか?
もしそれらが実際にあるクラスのフィールドであるなら、リフレクションのちょっとした手助けでそれらを得ることができます。
package test;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.List;
public class Test {
List<String> stringList = new ArrayList<String>();
List<Integer> integerList = new ArrayList<Integer>();
public static void main(String... args) throws Exception {
Field stringListField = Test.class.getDeclaredField("stringList");
ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();
Class<?> stringListClass = (Class<?>) stringListType.getActualTypeArguments()[0];
System.out.println(stringListClass); // class java.lang.String.
Field integerListField = Test.class.getDeclaredField("integerList");
ParameterizedType integerListType = (ParameterizedType) integerListField.getGenericType();
Class<?> integerListClass = (Class<?>) integerListType.getActualTypeArguments()[0];
System.out.println(integerListClass); // class java.lang.Integer.
}
}
また、メソッドのパラメータ型や戻り値の型についても同様に行うことができます。
しかし、それらを知る必要があるクラス/メソッドと同じスコープ内にある場合は、すでに自分で宣言しているので、それらを知る意味はないのです。
関連
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] ArrayListの初期化を1行で行う。
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] リフレクションを使ってジェネリックメソッドを呼び出すにはどうしたらいいですか?
-
[解決済み] 汎用型Tのクラスインスタンスを取得する方法を教えてください。
-
[解決済み] 汎用クラスやメソッドのメンバからTの型を取得する方法
-
[解決済み] C#で汎用リストをクローンする方法は?
-
[解決済み] メソッドの戻り値の型を汎用的にするにはどうすればよいですか?
-
[解決済み] GsonでList<T>オブジェクトをデシリアライズする?
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] maven. -source 1.5ではラムダ式がサポートされていません。
-
[解決済み] Jdbctemplate の文字列に対するクエリです。EmptyResultDataAccessException: 不正な結果サイズ:期待値1、実際0
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] Androidのコールバックとは何ですか?重複
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] SubclipseとJavaHLのインストールで頭を悩ます
-
[解決済み] Javaコンパイラーエラー:ステートメントではありません
-
[解決済み] 汎用型Tのクラスインスタンスを取得する方法を教えてください。