Builderパターンの使用
JoshuaBlochが著書EffectiveJava2ndEditionで説明しているビルダーパターンを使用してください。同じ例がhttp://www.javaspecialists.eu/archive/Issue163.htmlにあります。
次の行に特に注意してください。
NutritionFacts locoCola = new NutritionFacts.Builder(240, 8) // Mandatory
.sodium(30) // Optional
.carbohydrate(28) // Optional
.build();
使用する BeansUtils.populate
もう1つの方法は、ApacheCommonsBeansUtilsorg.apache.commons.beanutils.BeanUtils.populate(Object, Map)
のメソッドを使用することです。この場合、オブジェクトのプロパティを格納するためのマップが必要です。
コード:
public static void main(String[] args) throws Exception {
Map<String, Object> map = new HashMap<>();
map.put("servingSize", 10);
map.put("servings", 2);
map.put("calories", 1000);
map.put("fat", 1);
// Create the object
NutritionFacts bean = new NutritionFacts();
// Populate with the map properties
BeanUtils.populate(bean, map);
System.out.println(ToStringBuilder.reflectionToString(bean,
ToStringStyle.MULTI_LINE_STYLE));
}
出力:
NutritionFacts@188d2ae[
servingSize=10
servings=2
calories=1000
fat=1
sodium=<null>
carbohydrate=<null>
]