2016-10-24 18 views
0

私はゲッターとセッターで以下のクラスを持っています。名前に基づいてプロパティを選択し、値を取得します

class A{ 
private String field1Required; 
private String field2Required; 
private String field3; 
private String field4; 
} 

、私はオブジェクトに以下のように人口を受け取る私のメインプログラムで

field1Required = false; 
field2Required=true, 
field3=true; 
field4=false; 

を仮定だから私は唯一field1Requiredfield2Requiredを選択して、これらのプロパティの値を出力します。反射や他の方法でどのように達成できますか?

+0

あなたは、単語「必須」が含まれているすべてのフィールドを印刷する方法を探していますか? –

+0

クラスAの使い方は、そのプロパティでオブジェクトを初期化するためのセッター/ゲッターメソッドまたはコンストラクターがない場合です。これらの値は常にデフォルトに設定されます。 – Swaraj

+0

@RajaAnbazhaganはい – Harshana

答えて

0

あなたのクラスにゲッターとセッターが定義されていることを考慮して、このようなものを使用して結果を得ることができます。

A obj = new obj(); 
     Class clazz = data.getClass(); 
     Method[] arr = clazz.getDeclaredMethods(); 
     for (Method method : arr) { 
      if (method.getName().contains("get") && 
        method.getName().contains("Required")) { 
       System.out.println(method.invoke(obj)); 
      } 
     } 
0
A a = new A(); 
    Field fields [] =a.getClass().getDeclaredFields(); 
    for (int i=0;i<fields.length;i++) { 
     if (fields[i].getName().contains("Required")) 
      {fields[i].setAccessible(true); 
      System.out.println(fields[i]); 
      System.out.println(fields[i].get(a));}} 
    } 
関連する問題