Transmorph 2.0.0发布,一个对象转换框架
程序员文章站
2022-04-18 13:37:22
...
Transmorph 是一个新的免费Java库(Apache 2 License),用于将Java对象从一种类型转换到另一种类型。
Transmorph的优势:
- 支持转换为原始和对象
- 支持转换为多维数组
- 支持转换为参数的集合和类型
- JDK 1.4和JDK 1.5 的jars
- 没有依赖
- 轻松地添加更多的转换器
- 在使用modifiers之后,对象仍然可以被修改
- 可以轻松的转换为特定的类型
- 易于使用
Transmorph converter = new Transmorph(ConverterTest.class .getClassLoader(), new DefaultConverters()); // int[][] => String[][] int[][] arrayOfArrayOfInts = new int[][] { { 11, 12, 13 }, { 21, 22, 23 }, { 31 } }; String[][] arrayOfArrayOfStrings = (String[][]) converter.convert( arrayOfArrayOfInts, (new String[0][0]).getClass()); // Map[String, String[]] => Map<String,List><String>> Map map = new HashMap(); map.put("key1", new String[] { "value1-1", "value1-2" }); map.put("key2", new String[] { "value2-1", "value2-2" }); map.put("key3", null); map.put("key4", new String[] { null, null }); map.put(null, new String[] { "value5-1", "value5-2" }); Map<String, List><String>> converted = (Map<String, List><String>>) converter .convert(map, "Ljava.util.Map<Ljava.lang.String;Ljava.util.List><Ljava.lang.String;>;>;"); // int[] => Set<Integer> (ArrayToSetConverter) int[] arrayOfInts = new int[] { 0, 1, 2, 3, 4, 5 }; Set<Integer> setOfInts = (Set<Integer>) converter.convert(arrayOfInts, Set.class, new Class[] { Integer.class });
查看更多示例:http://transmorph.sourceforge.net
2.0.0版的新功能:
- 支持dotted样式(Ljava.util.Map<Ljava.lang.String;Ljava.util.List><Ljava.lang.String;>;>;)
- 新的转换情况:包含了一批创建对象,用于支持数据对象的双定向关系;
- 包含用于调试的转换器
- 新转换器(BeanToBean, EnumToEnum, ImmutableIdentityConverter, StringToQName, StringToTimeZone)
- 添加了modifier的概念,用于转换后:CanonicalizeFile, LowerCaseString, ResolveFile, TrimString, UppercaseString
- 许多转换器的改进