默认通用转换器的。
它支持的类型转换如下所示:
源类型 | 目标类型 |
String | boolean, Boolean; byte, Byte; char, Character; double, Double; float, Float; int, Integer; long, Long; short, Short; java.math.BigDecimal; java.math.BigInteger; java.util.Date; java.sql.Date; java.sql.Time; java.sql.Timestamp; enum |
String[] | 上述各类型的数组、java.util.List、java.util.Set。 比如“int[]”、“boolean[]”、“Short[]”、List<Integer>、List<Date>、Set<Integer>、Set<Date> |
Map<String, ?> | JavaBean; List<JavaBean>; Set<JavaBean>; Map<SomeKeyType, JavaBean> |
对于Map<String, ?>类型的源对象,它的关键字必须符合下面的访问符表达式格式:
accessor[.accessor ...]
这里,accessor可以是下面这些语义和字面值:
- JavaBean对象属性名
表明映射表的值是JavaBean的accessor属性值 - List、Set、数组对象的下标值
表明映射表的值是某个集合第accessor个元素的值 - Map对象关键字
表明映射表的值是另一个映射表accessor关键字的值 - "class"字面值
指定自定义转换目标类型,用以提供多态转换支持,它的值必须是全类名,比如:
"class" -> "org.somePkg.SomeJavaBean"
指定转换目标类型为“org.somePkg.SomeJavaBean”
"2.class" -> "org.somePkg.SomeJavaBeanSub"
指定转换目标集合的第三个元素类型为“org.somePkg.SomeJavaBeanSub”
"someKey.class" -> "org.somePkg.SomeJavaBean"
指定转换目标映射表的"someKey"元素类型为“org.somePkg.SomeJavaBean”
- "classes"字面值
当转换目标为集合类时(数组、List、Set),用以统一设置元素类型的数组,比如:
"classes" -> ["org.somePkg.SomeJava", "org.somePkg.SomeJavaSub"]
"2.class" -> "org.somePkg.SomeJavaBean"
指定目标集合的第一个元素类型为“org.somePkg.SomeJava”,第二个元素类型为“org.somePkg.SomeJavaSub”, 第三个元素类型为“org.somePkg.SomeJavaBean”
比如,它可以将下面的映射表:
"id" -> "1" "name" -> "jack" "listChildren.id" -> ["11", "12"] "listChildren.name" -> ["tom", "mary"] "setChildren.id" -> ["11", "12"] "setChildren.name" -> ["tom", "mary"] "arrayChildren.id" -> ["11", "12"] "arrayChildren.name" -> ["tom", "mary"] "mapChildren.key0.id" -> "11" "mapChildren.key0.name" -> "tom" "mapChildren.key1.id" -> "22" "mapChildren.key1.name" -> "mary"
转换为:
package org.somePkg; class User{ private Integer id; private String name; private List<User> listChildren; private Set<User> setChildren; private User[] arrayChildren; private Map<String, User> mapChildren; ... }
类型的对象,或者将:
"id" -> ["1","2","3"] "name" -> ["jack","tom","cherry"] "0.listChildren.id" -> ["10","11"] "0.listChildren.name" -> ["jack10","jack11"] "1.setChildren.0.id" -> "20" "1.setChildren.0.name" -> "tom20" "1.setChildren.1.id" -> "21" "1.setChildren.1.name" -> "tom21" "2.arrayChildren.0.id" -> "30" "2.arrayChildren.0.name" -> "cherry30" "2.arrayChildren.1.id" -> "31" "2.arrayChildren.1.name" -> "cherry31" "2.mapChildren.key0.id" -> "30" "2.mapChildren.key0.name" -> "cherry30" "2.mapChildren.key1.id" -> "31" "2.mapChildren.key1.name" -> "cherry31"
转换为:
List<User> Set<User> User[]
类型的对象。
你也可以通过 {@linkplain #addConverter(Type,Type,Converter)}方法为它添加更多辅助转换器,使其支持更多的类型转换。
另外,如果目标类型为String
,而你没有添加某类型对象到String
类型的辅助转换器,那么它将返回此对象的toString()
结果。
@author earthangry@gmail.com
@date 2010-10-6