我想为指定的类类型创建一组操作。我正在尝试如下的事情。
Map<Class<?>, Function<String, ?>> mapper = new HashMap<>();
我最终将其填充为
mapper.add(MyClass.class, s -> someMethod(s));
然后用法看起来像
mapper.get(MyClass.class).apply("someString");
这一切都很好,但我也想强制Function
的返回类型与mapper
的密钥相匹配。这是mapper
定义为
Map<Class<T>, Function<String, T>> mapper = new HashMap<>();
目标是mapper
只应填充返回键指定类型的对象的函数。实际上,我想确保
mapper.get(MyClass.class).apply("someString");
返回MyClass
类型的对象。但是,使用T
而不是通配符似乎不起作用。我收到编译器错误。这在Java中是否可能,或者我在开玩笑,应该坚持使用外卡方式?