【发布时间】:2015-03-16 19:54:15
【问题描述】:
我尝试执行以下操作:
Class<?> clazz = Optional
.ofNullable(settingsMap.get(key))
.map(Object::getClass)
.orElse(DBObject.class);
Eclipse 在orElse 上显示错误:“The method orElse(Class<capture#12-of ? extends Object>) in the type Optional<Class<capture#12-of ? extends Object>> is not applicable for the arguments (Class<DBObject>)”。
然后我尝试了以下方法,有效:
Optional<Class<?>> opClazz = Optional
.ofNullable(settingsMap.get(key))
.map(Object::getClass);
Class<?> clazz = opClazz.orElse(DBObject.class);
我做错了什么吗?或者这是 Java8 中的一个错误?
--
编辑:完整示例:
Map<String, Object> settingsMap = new HashMap<>();
Class<?> clazz = Optional
.ofNullable(settingsMap.get(""))
.map(Object::getClass)
.orElse(String.class);
【问题讨论】:
-
嗯,似乎可以使用 javac(不是 eclipse)。你的
settingsMap是如何定义的? -
只是
Map<String, Setting<?>> settingsMap = new HashMap<>();。 -
绝对是
Eclipse问题。
标签: java eclipse class generics java-8