java.beans.PropertyEditor介绍与用法, 类型转换器、属性编辑器

在很多框架里面, 我们需要将一个字符串转换成对应的对象, 如在spring的bean配置文件中, 将字符串转换成Integer, Double, Date日期, jdk提供的常见的几种属性转换如下图:


java.beans.PropertyEditor介绍与用法, 类型转换器、属性编辑器_第1张图片

 

用法如下:

 

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());
    }
}

 

 


 

你可能感兴趣的:(PropertyEditor)