【发布时间】:2018-01-29 14:23:55
【问题描述】:
我有一个 switch 语句,它遍历 json 文件并根据文件中的属性执行不同的操作。例如:
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),并且每个 case 有时都需要 Producer、Consumer 或 Function 接口,我该如何重构整个开关(最好使用某种形式的 Lambda)?我想用一个 Map,key 是这样的,比如“Product Class”,但是值是什么?
Map <String, ?> = new HashMap<>();
感谢您的帮助!
【问题讨论】:
-
不能创建一个反映json结构的类,只解析输入吗?
标签: java java-8 switch-statement refactoring