我希望我的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) {
}
}
答案 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);