jsonファイルをステップ実行し、ファイルの属性によって異なる処理を行うswitch文があります。例えば:Javaの8リファクタリングステートメント各ケースで異なることを行う
dataMap.forEach((k, v) -> {
Product product = new Product();
ProductLine productLine = new ProductLine();
Vendor currentVendor = new Vendor();
// Step over each atttribute in the line of the file
v.forEach((k2, v2) -> {
switch(k2) {
case "Product Class": {
Set<ProductCategory> categories = new HashSet<>();
try {
List<String> categoryList = Arrays.asList(v2.split(","));
categoryList.forEach(it ->{
ProductCategory category = ProductCategory.loadTypeByValue(it.trim());
categories.add(category);
});
product.setProductCategories(categories);
} catch (Exception e) {
//
}
break;
}
case "Product Name": {
product.setName(v2);
productLine.setName(v2);
break;
}
case "SKU": {
product.setSKU(v2);
break;
}
case "Name": {
vendor.setName(v2);
}
....
これらケースステートメントは、異なるオブジェクト(Product
、ProductLine
、及びVendor
)と連携し、各ケースが時々Producer
、Consumer
、又はFunction
インタフェースを必要とするので、どのようにIは、好ましくは、(全体のスイッチをリファクタリングすることができいくつかの種類のLambdasを使用して)?私はマップを使用することを考えましたが、キーは「製品クラス」のようにそうですが、値は何ですか?
Map <String, ?> = new HashMap<>();
ありがとうございました!
あなたはJSONの構造を反映したクラスを作成し、ちょうど入力を解析できませんか? – PanBrambor