目標:
クラス フィールドと拡張クラス フィールドの値を設定する
例 :
public class CreateRequisitionRO extends AbstractPortfolioSpecificRO {....}
の値を設定できますが、拡張されているCreateRequisitionRO
値を設定できません。AbstractPortfolioSpecificRO
これは私が値を設定する方法です:
public Object creatObjectWithDefaultValue(String className) throws IllegalArgumentException, IllegalAccessException, InstantiationException {
Class<?> objectClass = null;
Object clsObject =null;
try {
objectClass = Class.forName(className);
clsObject = objectClass.newInstance();
Field[] fields = objectClass.getDeclaredFields();
for(Field f:fields){
if(!f.isAccessible()){
f.setAccessible(true);
Class<?> type = f.getType();
if(! Modifier.isFinal(f.getModifiers()) && type.equals(Integer.class)){
f.set(clsObject, DefaultParamValuesEnum.INTEGER.getDefaultInt());
} else if( !Modifier.isFinal(f.getModifiers()) && type.equals(java.math.BigDecimal.class)){
f.set(clsObject, DefaultParamValuesEnum.BIGDECIMAL.getDdefaultBigDecimal());
} else if(! Modifier.isFinal(f.getModifiers()) && type.equals(org.joda.time.LocalDate.class)){
f.set(clsObject,DefaultParamValuesEnum.DATE.getDefaultDate());
} else if(! Modifier.isFinal(f.getModifiers()) && type.equals(boolean.class)){
f.set(clsObject, DefaultParamValuesEnum.BOOLEAN.getDefaultBoolean());
} else if(! Modifier.isFinal(f.getModifiers()) && type.equals(java.lang.String.class)){
f.set(clsObject, DefaultParamValuesEnum.STRING.getDefaultString());
}
else if(! Modifier.isFinal(f.getModifiers()) && type.equals(long.class)){
f.set(clsObject,DefaultParamValuesEnum.LONGVALUE.getDefaultLong());
}
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return clsObject;
}
これは私が上記のメソッドを呼び出す方法です:
classObject.creatJSONObject("com.hexgen.ro.request.CreateRequisitionRO");
上記の方法はCreateRequisitionRO
、拡張クラスで使用可能なフィールド以外で使用可能なすべてのフィールドに値を設定します。
設定方法は?