从java方法返回泛型类型

时间:2017-03-16 19:27:31

标签: java generics

我希望我的Java方法返回通用T.我无法让它工作。我的方法在线程池执行器上执行传入方法,并通过Future.get()等待结果,我想传回结果,这个结果可能会有所不同,具体取决于在供应商上传递的方法。

这就是我所拥有的,它有效,但我需要在使用时转换为正确的类型。我更喜欢使用T t样式而不是Object。

   public Object executeThis(Supplier<T> request) throws RejectedExecutionException {
    Object obj = null;

    try {
        Future future = executor.submit(() -> request.get());
        obj = future.get(timeoutInMilis, TimeUnit.MILLISECONDS);
    } catch (ExecutionException | InterruptedException e) {
    }
}

1 个答案:

答案 0 :(得分:2)

要返回通用类型:

public <T> T executeThis(Supplier<T> request){}

你只需要在diamond运算符里面的返回类型之前声明泛型类型,然后声明方法返回类型(T)

你必须修改它:

Future future = executor.submit(() -> request.get());
obj = future.get(timeoutInMilis, TimeUnit.MILLISECONDS);

到:

Future<T> future = executor.submit(() -> request.get());
T obj = future.get(timeoutInMilis, TimeUnit.MILLISECONDS);