我在使用泛型对现有设计进行重新设计/重构时遇到了困难。
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
都是相同的“类型”。例如,如果我有ADataDto
, BDataDto
, ASetDto<ADataDto>
, BSetDto<BDataDto>
, AResults<ASetDto>
, BResults<BSetDto>
,我想确保一个类不能以类似的方式实现 MyProblemInterface AMyProblemInterface<ADataDto, ASetDto, BResults>
。我认为既然MySetDto
延伸SetDto<MyDataDto>
得很好,我可以继续更进一步,但我显然错了。
感谢您的任何帮助。