让我举一个具体的例子。
我有一个名为FutureConverter
的界面。我们的想法是能够将CompletableFuture
转换为另一种类型。如果您想在另一种JVM语言中使用我的库,这很有用。
我有一个返回CompletableFuture<MyClass>
的方法,我想将返回类型转换为MyGenericFutureType<MyClass>
。但是,我不知道如何给MyGenericFutureType
一个参数。
我希望能够做到这样的事情:
MyMainClass<FUTURE> {
private final FutureConverter<FUTURE> converter;
FUTURE<MyClass> myFunction() {
//let's imagine soSomething is a method defined somewhere that returns CompletableFuture<MyClass>
CompletableFuture<MyClass> myFuture = doSomething();
return converter.convert(myFuture);
}
}
现在类型参数FUTURE
并不知道他自己需要一个参数,所以它显然没有编译。
我知道Java类型系统可能会受到限制,但我希望这可能是某种方式。
非常感谢你!
答案 0 :(得分:0)
定义您的FutureConverter
界面,如下所示:
public interface FutureConverter<S, T> {
MyGenericFutureType<T> convert(CompletableFuture<S> source);
}
在您的具体转换器中(从CompletableFuture<Foo>
到MyGenericFutureType<Foo>
,您只需实施FutureConverter<Foo>
。
您可能还想了解一下Spring的转换器: https://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html#core-convert