private Service generateActionResponse(@Nonnull Class<? extends RetryActionResultDto> response) {
if (response.isSuccess()) {
...
} else if (response.getRetryDecision() {
....
}
}
public interface RetryActionResultDto extends DTO {
public RetryDecision getRetryDecision();
public boolean isSuccess();
}
但我得到例外
类型Class
的方法isSuccess()未定义
我能做什么?
答案 0 :(得分:3)
你的论点是一个类......不是那个类的实例。因此错误。
尝试将其更改为:
private Service generateActionResponse(@Nonnull RetryActionResultDto response) {
if (response.isSuccess()) {
...
} else if (response.getRetryDecision() {
....
}
}
子类的实例也会通过它。
答案 1 :(得分:1)
private <T> Service generateActionResponse(@Nonnull T extends RetryActionResultDto response) {
if (response.isSuccess()) {
...
} else if (response.getRetryDecision() {
....
}
}
但是,由于RetryActionResultDto
是一个接口,该方法只接受RetryActionResultDto
子类型的参数,即使没有泛型。
答案 2 :(得分:1)
您可以重写这个方法定义:
private <T extends RetryActionResultDto> String generateActionResponse(
T response) {
..
}
表示method参数接受RetryActionResultDto
或其子类的实例。
答案 3 :(得分:0)
你在这里想做的是错的。 Class<? extends RetryActionResultDto>
是Class
,而不是实现RetryActionResultDto
的类的对象。
如果你想让类已经实现RetryActionResultDto
的对象作为参数传递,那么你可以使用
private Service generateActionResponse(@Nonnull RetryActionResultDto response) {
当传递的参数已实现接口时,它将具有在接口中声明的所有方法,并且将在运行时中针对传递的对象调用方法的实际实现。