既存の設計で行っている再設計/リファクタリングにジェネリックを使用するのが困難です。
public interface DataDto {
// some data here
}
public interface SetDto<MyDataDto extends DataDto> {
List<MyDataDto> getData();
}
public interface Results<MySetDto extends SetDto<DataDto>> {
MySetDto getResults();
}
public interface MyProblemInterface<MyDataDto extends DataDto,
MySetDto extends SetDto<MyDataDto>,
MyResults extends Results<MySetDto>> {
// some stuff here
}
私の問題は、次のエラーが発生することですMyProblemInterface
。
Bound mismatch: The type MySetDto is not a valid substitute for the
bounded parameter <MySetDto extends SetDto<DataDto>> of the type
Results<MySetDto>
MyProblemInterface
ジェネリックの経験が多少限られていることは認めますが、基本的には、3 つの型すべてが同じ「型」であることを強制しようとしています。たとえば、 、 、 、 、 がある場合ADataDto
、BDataDto
クラスASetDto<ADataDto>
がBSetDto<BDataDto>
MyProblemInterfaceAResults<ASetDto>
をBResults<BSetDto>
のような方法で実装できないようにしたいと考えていますAMyProblemInterface<ADataDto, ASetDto, BResults>
。MySetDto
うまく拡張できるので、それをさらに進めることができると思いますが、SetDto<MyDataDto>
明らかに間違っています。
助けてくれてありがとう。