0
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();

}

but I get exception

The method isSuccess() is undefined for the type Class

what i can do?

4

4 回答 4

3

您的论点是一个类..不是该类的实例。因此错误。

尝试将其更改为:

private Service generateActionResponse(@Nonnull RetryActionResultDto response) {
    if (response.isSuccess()) {
        ...
    } else if (response.getRetryDecision() {
      ....
    }
}

子类的实例也将通过它。

于 2013-10-09T11:11:15.110 回答
1
private <T> Service generateActionResponse(@Nonnull T extends RetryActionResultDto response) {
    if (response.isSuccess()) {
        ...
    } else if (response.getRetryDecision() {
        ....
    }
}

但是,由于RetryActionResultDto是一个接口,因此该方法只接受属于 的子类型的参数RetryActionResultDto,即使没有泛型也是如此。

于 2013-10-09T11:16:43.643 回答
1

您可以这样重写方法定义:

private <T extends RetryActionResultDto> String generateActionResponse(
            T response) {
..
}

这表示方法参数接受RetryActionResultDto或其子类的实例。

于 2013-10-09T11:19:33.093 回答
0

您在这里尝试做的事情是错误的。Class<? extends RetryActionResultDto>是一个Class而不是一个实现的类的对象RetryActionResultDto

如果您希望将其类已实现RetryActionResultDto的对象作为参数传递,那么您可以使用

private Service generateActionResponse(@Nonnull RetryActionResultDto response) {

由于传递的参数已经实现了接口,它将具有接口中声明的所有方法,并且方法的实际实现将在运行时针对传递的对象调用。

于 2013-10-09T11:19:50.460 回答