我有一個switch語句,通過json文件逐步執行,並根據文件中的屬性執行不同的操作。例如:Java 8重構switch語句,爲每種情況做不同的事情
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);
}
....
由於這些case語句與不同的對象(Product
,ProductLine
,和Vendor
)工作,每一種情況下,有時需要Producer
,Consumer
,或Function
接口,我怎樣才能重構整個開關(優選使用某種類型的Lambdas)?我想過使用Map,關鍵是如「產品類」,但價值是什麼?
Map <String, ?> = new HashMap<>();
感謝您的幫助!
你能不能建立反映JSON結構的一類,只是解析輸入? – PanBrambor