说我有这样的东西:
async.inject(Map.of(
"foo", new Task<Foo>(Set.of("bar"), v -> {
v.done(null, new Foo());
}),
"bar", new Task<Bar>(Set.of("baz"), v -> {
v.done(null, new Bar());
}),
"baz", new Task<Baz>(Set.of("bar","foo"), v -> {
Bar b = v.get("bar");
v.done(null, b.getWhatever());
}),
), (err, result) -> {
Bar b = result.get("bar");
Foo f = result.get("foo");
Baz z = result.get("baz");
});
我有两个问题:
是否可以通过任何方式对Set键进行类型检查,并确保这些键名称也在Map中?再次,我有3个Set.of()调用,并且我想确保这些集合中的任何键也都在Map.of()地图中。 (使用TypeScript,我们也许可以使用keyof
)。
Task的参数表示已解析的类型-是否可以从其他方法读取该类型?例如:
Bar b = result.get(“ bar”);
编译器如何知道这是Bar实例?有没有办法进行类型检查?
理想情况下,我可以进行一些类型检查并避免反射,以便在编译时可以发现更多问题。
是的,我正在尝试将异步库从JS-land移植到Java :)请注意,上面的问题中有一些循环依赖项,请忽略它们。