0
DTOの変数名を取得したい
@Data
public class Company {
private Long id;
private String name;
private String address;
}
というクラスがあるとします。
他のクラスで、id、name、addressをString型にこだわらないので、この変数名を取得したいです。
0
@Data
public class Company {
private Long id;
private String name;
private String address;
}
というクラスがあるとします。
他のクラスで、id、name、addressをString型にこだわらないので、この変数名を取得したいです。
0
検索キーワード:リフレクション
0
解答ありがとうございます。
クラスのtoStringや、回答にあるようにリフレクションでやりたい事が普通に出来ました。
以下、toStringで変更名を取得、文字操作で抽出後。
Company company = new Company();
//格納したい変数名を渡す。(nameの所にString)
Field field = company.class.getDeclaredField("name");
field.setAccessible(true);
//セット
field.set(company, "値");
nameはtoStringからの値を入れれば自動生成されたDTOに値を入れられそうです。
勉強になりました。
0
調査で気づいたと思うが、class直下に書いてある変数は「フィールド」と呼ぶ。
特定の状態を持ったインスタンスを作りたいなら、フィールド名と値だけをコードの外に持っておく方法が良い(.txt、.csv、.xls等、あるいは配列やMapのベタ書きでも)。
それから、まずpublic setId()を確認し、だめならフィールドidを確認するフレームワークも多い。理由は考えてみよう。
念のため、クラスに手を入れられるならリフレクションを使う必要はないし、望ましくもない。
void setParam(String[][])
や
void setParam(Map<String, String>)
みたいな共通インターフェースにより、クラス自身が自分のフィールドを設定する口を作れば良い。
質問から6ヶ月以上経過しているので、回答を書き込むことはできません。