java - 通过使用泛型传递类来返回类型化类的正确 Java 类型

标签 java generics

为了更好地理解我的问题,请参阅以下类(class):

public interface Invoker<R> {
  public String getName();
  public R getResult();
}

实现:

public class RepairFetcher implements Invoker<List<String>> {

  @Override
  public String getName() {
    return this.getClass().getSimpleName();
  }

  @Override
  public List<String> getResult() {
    return new ArrayList<String>();
  }

}

出错的类:

public class OperationService {

   public <R> R invoke(Class<R> invoker, Object... parameters) {
     WebserviceOperation<R> operation = new WebserviceOperation<R>(invoker);
     Invoker<R> instance = operation.getInstance();

     return instance.getResult();
   }

}

主类:

public class Main {

  public static void main(String[] args) {

    OperationService operationService = new OperationService();
    operationService.invoke(RepairFetcher.class, new Object[] {});

  }

}

问题: 此时的方法

operationService.invoke(RepairFetcher.class, new Object[] {});

返回一个 RepairFetcher,由于 invoke 方法中的参数,这并不奇怪:

Class invoker

它返回 R,它是一个 RepairFetcher.class。

我想要什么 我不希望调用方法返回 RepairFetcher 类,但我希望它返回声明的类型,即 List

这是否可能,如果可能,如何实现?

提前致谢!

最佳答案

不确定,但尝试:

public <T, R extends Invoker<T>> T invoke(Class<R> invoker, Object... parameters) {

关于java - 通过使用泛型传递类来返回类型化类的正确 Java 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10041443/

相关文章:

java - Spring Boot 无法识别 MongoDB RestController 类

java - 小程序必须授予什么权限才能写入临时文件?

java - 使用泛型返回动态 JAXBElement

r - rep 真的是泛型吗?

java - 丢失数据,Map 包含字符串和整数

java - Eclipse 无法启动程序

java - 使用 SplitVerifier Java 7 到 Java 9

typescript 接口(interface) : Any way to describe "<Property> of <Interface>"

java - <? 之间有什么区别?扩展对象> 和 <E 扩展对象>?

c# - 优化的通用列表拆分