今天做项目时,遇到一个把一个map的值赋给一个JavaBean,本来是很简单的事,用apache的BeanUtils就可以了,不过JavaBean里有个成员变量的类型是Enum,转的时候就报错,在百度搜了半天没搜到,本来想自己通过反射来实现,但考虑到通用性上,最后还是在看org.apache.commons.beanutils.BeanUtils的相关官方文档才找到解决办法的。
比如一个map{productID=1,type=CAR},
javaBean为public class Product{
String productID;
ProductType type;//ProductType为一个enum
}
转的代码也比较简单:
//注入一个ProductType枚举 ConvertUtils.register(new Converter() { public Object convert(Class type, Object value) { return ProductType.valueOf((String)value); } }, ProductType.class); }
然后再使用BeanUtils.copyProperties(dest, orig);就可以了。
不知道有没有别的好的方法,本人觉得最主要是怎么让copy方法知道javabean里面的枚举类型,就像Xstream把xml转为javabean时,要知道是哪个对象,里面的嵌套对象是哪个类。
相关推荐
java枚举源码BeanUtils 这个 BeanUtils 库是一个 Java bean 复制实用程序,具有强大的功能和高性能。 Maven 使用 <groupId>com.github.yangtu222</groupId> <artifactId>BeanUtils <version>1.0.11 特征:...
json-lib支持多种数据结构,如Map、List、Date、Enum等,并且可以处理自定义类。对于jdk15版本,这意味着它兼容Java 5及更高版本。 2. **commons-collections-3.2.1.jar**: Apache Commons Collections是Apache软件...
enum 类型、对多种嵌套的 Exception 类型的支持、对 java.util.Date 的增强以及用于构建方法的实用程序,例如自动生成 toString() 的结果、自动实现 hashCode() 和 equals() 方法、数组操作、枚举、日期和时间的处理...
枚举(enum)是Java中一种特殊的类,用于定义一组固定的常量。枚举类型的实例都是`public static final`的,不能有公共构造函数。枚举可以包含方法和变量,并且可以扩展功能,甚至定义抽象方法。枚举的使用有助于...
3. **org.apache.commons.lang.enum**:这是一个旧的枚举处理包,现在已被废弃,推荐使用`org.apache.commons.lang.enums`。 4. **org.apache.commons.lang.enums**:用于处理枚举类型,提供了一些便利的方法来操作...
BeanUtils库提供了一套便捷的工具方法,用于处理JavaBean属性的设置和获取,以及对象之间的属性拷贝,包括对象到对象的类型转换。`Converter`接口用于实现自定义的类型转换逻辑。 以下是对`MyEnumConverter`的详细...
课程涵盖了多个关键知识点,包括Eclipse的使用技巧、静态导入、可变参数、增强for循环、基本数据类型的自动拆箱与装箱、枚举、反射、JavaBean内省、BeanUtils工具包、注解、泛型、类加载器、代理以及线程并发库等。...
**7.8 内省——BeanUtils 工具包** - **功能**: 提供操作 JavaBean 的便捷方法。 - **操作**: - 属性复制 - 属性获取 **7.9 泛型(Generic)** - **目的**: 在编译时检查类型安全,并允许创建高度可复用的组件。 - ...