Java 返回?扩展类型

Java 返回?扩展类型,java,oop,inheritance,polymorphism,Java,Oop,Inheritance,Polymorphism,我想要一个方法签名,其外观如下: public <? extends IDto> convertToResponseDto(); public您可以定义泛型类型 public <T extends IDto> T convertToResponseDto(); public T convertToResponseDto(); 您可以定义泛型类型 public <T extends IDto> T convertToResponseDto(); publi

我想要一个方法签名,其外观如下:

public <? extends IDto> convertToResponseDto();

public您可以定义泛型类型

public <T extends IDto> T convertToResponseDto();
public T convertToResponseDto();

您可以定义泛型类型

public <T extends IDto> T convertToResponseDto();
public T convertToResponseDto();

您可以使用更具体的子类型作为返回类型覆盖接口方法或超类方法。说你的超类说

public IDto convertToDTO()
然后你的子类可以说

public MySpecificDTO convertToDTO() 

这是Java语言暗示的,不需要任何泛型。

您可以使用更具体的子类型作为返回类型重写接口方法或超类方法。说你的超类说

public IDto convertToDTO()
然后你的子类可以说

public MySpecificDTO convertToDTO() 

这是Java语言暗示的,不需要任何泛型。

只需使用
public IDto convertToResponseDto()
@JohannesKuhn我有一个要求,即该方法的结果作为具体类返回(无论是什么)。处理这个问题的最好方法是使用强制转换吗?如果你重载它,你可以使用子类型。否则,当您执行诸如
icantreturnanything()
之类的操作时,事情会变得非常复杂。您可以使用更具体的子类型作为返回类型覆盖接口方法或超类方法。假设您的超类说
public IDto convertto()
,那么您的子类可以说
public MySpecificDTO convertto()
——这是隐含的,不需要任何泛型。@ErwinBolwidt所以在实现该接口的类中,我应该能够编写:
public UserDto convertToResponseDto(){}
?我遇到了一个错误,只需使用
public IDto convertToResponseDto()
@JohannesKuhn我有一个要求,即该方法的结果作为具体类返回(无论是什么)。处理这个问题的最好方法是使用强制转换吗?如果你重载它,你可以使用子类型。否则,当您执行诸如
icantreturnanything()
之类的操作时,事情会变得非常复杂。您可以使用更具体的子类型作为返回类型覆盖接口方法或超类方法。假设您的超类说
public IDto convertto()
,那么您的子类可以说
public MySpecificDTO convertto()
——这是隐含的,不需要任何泛型。@ErwinBolwidt所以在实现该接口的类中,我应该能够编写:
public UserDto convertToResponseDto(){}
?我犯了一个错误我曾经知道为什么像这样返回泛型不是一个好主意:我曾经知道为什么像这样返回泛型不是一个好主意: