在java中编写适配器时的最佳实践

时间:2012-12-18 10:41:53

标签: java adapter

我正在尝试编写适配器。我有近50个属性,我试图从一个类适应另一个类。

我的代码如下:

public static Type2 getType2(Type1 type1)
{
...

  if(!StringUtils.isEmpty(type1.getAttribute1()) {
     type2.setAttribute1( type1.getAttribute1() );
  }
  // and so on for all the 50 attributes
...
}

有没有更好的方法来编写此适配器方法?

2 个答案:

答案 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()