在Java中进行对象转换的简单/优雅方式?

drt*_*drt 1 java

我必须接管并改进/完善一些代码,将Java对象从第三方库转换为内部对象.目前,这是通过一个大的if-else语句完成的:

if (obj instanceOf X)
{
    //code to initialize internal object
}
else if (obj instanceOf Y)
{
    //code to initialize different object
}
else if (obj instanceOf Z)
{
    //more init code
}
...
Run Code Online (Sandbox Code Playgroud)

我个人认为这个解决方案并不令人满意; 它变得冗长而混乱,更糟糕的是,许多if-else块包含更多if-else块处理子类和边缘情况.这个问题有更好的解决方案吗?

Joa*_*uer 7

创建这样的界面

public interface Converter<S,T> {
  public T convert(S source);
}
Run Code Online (Sandbox Code Playgroud)

并为X,Y,Z的每个对象实现它.然后将所有已知的转换器放入Map中并开心!