不変オブジェクトを DTO オブジェクトにしたいと考えています。そのために、 http://immutables.github.io/を使用したいと思います。
次のレガシー階層があります。
public interface Interface1 extends Serializable{
public void method1();
}
public interface Interface2<T> extends Interface1{
public void method2();
}
public class Implementation1<T> implements Interface2<T>{
public void method1(){ }
public void method2(){
return null;
}
}
下位互換性を維持するために、以下に示す新しいインターフェイスと実装を実装したいと考えています。
@Value.Immutable
public Interface3<T> extends Interface2<T>{
public void method3();
}
これにより、ImmutableInterface3 クラスが生成され、ビルダーを取得してクラス実装をビルドできるようになります。
問題は、次のステートメントを使用できないことです。
Interface3<Object> immutableImplementationOfInterface3 = ImmutableInterface3<Object>.builder().build();
このソリューションに問題はありますか?