前提
springフレームワークを使用。
実現したいこと
Entityクラスからリストのクラス型を取得したい
該当のソースコード
TestEntity.java
1@Entity 2@Data 3public class TestEntity{ 4 5private List〈Hoge〉hogeList; 6}
Hoge.java
1@Entity 2@Data 3public class Hoge{ 4 5private String dog; 6 7private int num; 8}
TestClass.java
1 2public class TestClass{ 3 4// TestEntityのhogeListからhogeのインスタンスを取得したい 5}
試したこと
TestClass.java
1 2public class TestClass{ 3 4 public void sample(){ 5 TestEntity entity = new TestEntity(); 6 Field field = entity.getClass().getDeclaredFields(); 7System.out.println(field.getType()); 8 } 9}
Fieldクラスから取得しようと試みた
List のクラスは List.class では。
そうなんです。
ただ私はHogeを取得したいのです。
型がわかるのはコンパイラまでで、実行時のListの要素の型クラスは、型イレージャによってObjectになっています。
Hoge型であることがわかるのは、Listから要素を取り出したときです。
実行時にListが空ならジェネリックな型は不明ということになります。
List<Hoge> の Hoge は型パラメータ(入れられるオブジェクトのクラス)であって『リストのクラス型』というのでは無いのでは…。
『TestEntityのhogeListからhogeのインスタンスを取得したい』のなら、TestEntity にゲッターでも作って取り出せるようにするのが正攻法だと思いますが、そう出来ないのでしょうか。
>List〈Hoge〉
わざわざ <> を置換しなくても、コードのマークダウンの中なら大丈夫です。反ってコピペでエラーになるのでやらない方が良いです。
すみません。こちらで試したところ取得できました。回答へのコメントをご覧ください。
回答1件
あなたの回答
tips
プレビュー