【发布时间】:2018-11-05 18:04:28
【问题描述】:
我有一个对象人
public class Person {
private String name;
private Integer age ;
private String address;
private String group;
private String id;
public Person(String name, Integer age, String address, String group, String id) {
this.name = name;
this.age = age;
this.address = address;
this.group = group;
this.id = id;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
", group='" + group + '\'' +
", id='" + id + '\'' +
'}';
}
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public void setAddress(String address) {
this.address = address;
}
public void setGroup(String group) {
this.group = group;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public String getAddress() {
return address;
}
public String getGroup() {
return group;
}
public String getId() {
return id;
}
}
元数据
public class MetaData {
private String fieldName;
private String comparator;
private String fieldValue;
private String newFieldName;
private String newFieldValue;
public MetaData(String fieldName, String comparator, String fieldValue, String newFieldName, String newFieldValue) {
this.fieldName = fieldName;
this.comparator = comparator;
this.fieldValue = fieldValue;
this.newFieldName = newFieldName;
this.newFieldValue = newFieldValue;
}
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
public String getComparator() {
return comparator;
}
public void setComparator(String comparator) {
this.comparator = comparator;
}
public String getFieldValue() {
return fieldValue;
}
public void setFieldValue(String fieldValue) {
this.fieldValue = fieldValue;
}
public String getNewFieldName() {
return newFieldName;
}
public void setNewFieldName(String newFieldName) {
this.newFieldName = newFieldName;
}
public String getNewFieldValue() {
return newFieldValue;
}
public void setNewFieldValue(String newFieldValue) {
this.newFieldValue = newFieldValue;
}
}
我得到了 person 列表。对于每个人,我必须通过元数据(基于 ID ) 对于每个元数据,我必须查看要匹配的字段以及要替换的值
例如
public class TestPersonModifier {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("John", 22, "London", "BETA", "ABC"));
personList.add(new Person("Mathew", 44, "Glasgow", "ALPHA", "XYZ"));
List<MetaData> metaData = new ArrayList<>();
metaData.add(new MetaData("name", "EQUALS", "John", "group", "SIGMA"));
metaData.add(new MetaData("name", "EQUALS", "Mathew", "address", "Singapore"));
//g
personList.forEach(p -> {
metaData.forEach(m -> {
if (m.getFieldName().equals("name")) {
if (m.getComparator().equals("EQUALS")) {
if (p.getName().equals(m.getFieldValue())) {
if (m.getNewFieldName().equals("group")) {
System.out.println(p.getId() + "::The group value changed from " + p.getGroup() + " to " + m.getNewFieldValue());
p.setGroup(m.getNewFieldValue());
}
if (m.getNewFieldName().equals("address")) {
System.out.println(p.getId() + "::The address value changed from " + p.getAddress() + " to " + m.getNewFieldValue());
p.setGroup(m.getNewFieldValue());
}
}
}
}
});
});
}
}
如上所述,它将非常笨拙,因为会有更多的比较器运算符和更多的字段。
是否有我可以使用的表达式语言框架或 JAva 库或任何开源框架来使其成为通用解决方案
【问题讨论】:
-
投票结束问题的人应该注意发表评论。
标签: java java-8 expression comparator