1
我有一个CompletableFuture,其类型取决于消息返回的结果:一些消息我可以问一个课程它需要什么类型的泛型?
public <T> CompletableFuture<T> getFuture(
CompletableMessage message)
{
..
}
例子:
public class SomeMessageA implements CompletableMessage {
.. // Future is UUID
}
public class SomeMessageB implements CompletableMessage {
.. // Future is String
}
public class SomeMessageC implements CompletableMessage {
.. // Future is Integer
}
我已经可以明确指定通用:
CompletableFuture<UUID> a = getFuture(new SomeMessageA());
CompletableFuture<String> b = getFuture(new SomeMessageB());
CompletableFuture<Integer> c = getFuture(new SomeMessageC());
这样做的麻烦是我直到运行时才发现是否有错误。
有没有一种方法,我可以通过询问消息是否返回对象的类来获取将来的泛型类型?
我可以在C做++这样的:
class SomeMessageA {
public:
typedef int future_t;
};
SomeMessageA::future_t a;
我可以做的Java类似的东西或我会永远必须引用的预期类型的文档?
完美。非常感谢。 – Zhro