既存の設計で行っている再設計/リファクタリングにジェネリックを使用するのが困難です。
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>明らかに間違っています。
助けてくれてありがとう。