我正在尝试编写适配器。我有近50个属性,我试图从一个类适应另一个类。
我的代码如下:
public static Type2 getType2(Type1 type1)
{
...
if(!StringUtils.isEmpty(type1.getAttribute1()) {
type2.setAttribute1( type1.getAttribute1() );
}
// and so on for all the 50 attributes
...
}
有没有更好的方法来编写此适配器方法?
答案 0 :(得分:2)
您可以使用通用方法将属性从一个实例复制到另一个实例:
public static <T> T copy(T source, T target) throws IllegalArgumentException, IllegalAccessException {
for ( Field f : target.getClass().getDeclaredFields() ) {
f.setAccessible( true );
Object o = f.get( source );
f.set( target, o);
}
return target;
}
答案 1 :(得分:2)
如果属性名称匹配,您可以考虑使用Apache Commons BeanUtils。
如果不需要进行类型转换,您可以使用PropertyUtils.copyProperties()
:
public static Type2 getType2(Type1 type1) {
Type2 type2 = new Type2();
org.apache.commons.beanutils.PropertyUtils.copyProperties(type2, type1);
return type2;
}
如果需要进行类型转换,请改用BeanUtils.copyProperties()
。