public class BeanUtilsExample { static { ConvertUtils.register((source -> { if (source instanceof String && ((String) source).startsWith("prefix")) { return ((String) source).substring(6); } return source; }), String.class); } public static void main(String[] args) { SourceObject source = new SourceObject(); TargetObject target = new TargetObject(); source.setPrefixName("John"); source.setPrefixAge(20); BeanUtils.copyProperties(source, target); System.out.println(target.getName()); // 输出:John System.out.println(target.getAge()); // 输出:20 } }优化这段代码
时间: 2024-04-02 08:35:34 浏览: 49
这段代码本身没有明显的问题,只是可以进行一些优化,例如:
1. ConvertUtils.register()方法只需要在应用启动时执行一次,可以将它放在静态块中;
2. 如果多次调用BeanUtils.copyProperties()方法,可以将BeanUtils对象作为静态变量缓存起来,避免重复创建对象。
修改后的代码如下:
public class BeanUtilsExample {
private static final BeanUtils beanUtils = new BeanUtils();
static {
ConvertUtils.register((source -> {
if (source instanceof String && ((String) source).startsWith("prefix")) {
return ((String) source).substring(6);
}
return source;
}), String.class);
}
public static void main(String[] args) {
SourceObject source = new SourceObject();
TargetObject target = new TargetObject();
source.setPrefixName("John");
source.setPrefixAge(20);
beanUtils.copyProperties(target, source);
System.out.println(target.getName()); // 输出:John
System.out.println(target.getAge()); // 输出:20
}
}
阅读全文