Java通用函数返回类型

时间:2017-09-17 01:05:43

标签: java generics

我想为指定的类类型创建一组操作。我正在尝试如下的事情。

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中是否可能,或者我在开玩笑,应该坚持使用外卡方式?

0 个答案:

没有答案