在很多框架里面, 我们需要将一个字符串转换成对应的对象, 如在spring的bean配置文件中, 将字符串转换成Integer, Double, Date日期, jdk提供的常见的几种属性转换如下图:
用法如下:
DoubleEditor doubleEditor = new DoubleEditor();
doubleEditor.setAsText("12.12");
Double d = (Double)doubleEditor.getValue();
System.out.println(d);
主要步骤:
1、根据类型转换需要, 创建对应的属性转换器
2、调用setAsText()方法, 参数为需要转换的字符串,
3、调用getValue获取转换后的对象
自定义属性编辑器的步骤:
1、自定义属性编辑器类继承PropertyEditorSupport
2、重写setAsTest方法, 在方法中创建需要转换的对象,并使用重写方法的参数,给创建的对象属性设值, 并setValue(创建的对象)
<!--EndFragment-->
除了jdk提供的几种属性转换器, 如:将一个字符串, 转换成自定义的User对象,
//字符串转换后的User对象
public class User {
private String userName;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
//User属性编辑器, 需要继承PropertyEditorSupport, 重写setAsTest方法
public class UserPropertyEditor extends PropertyEditorSupport{
@Override
public void setAsText(String text) throws IllegalArgumentException {
String[] args = text.split(",");
User user = new User();
user.setUserName(args[0]);
user.setAge(Integer.parseInt(args[1]));
setValue(user);
}
}
//测试类
public class Demo {
@Test
public void testPropertyEditor() {
UserPropertyEditor editor = new UserPropertyEditor();
editor.setAsText("wan,30");
User user = (User) editor.getValue();
System.out.println(user.getUserName() + "," + user.getAge());
}
}