Java 无法转换 HashMapNode
Java cannot cast HashMapNode
我尝试过类似的方法从 HashMap(仅包含字符串)中获取 HashMap
(getObjects() returns 这个 HashMap<String, Object>
)
public <V> Map<String, V> castObjects(final Class<V> cast) {
return getObjects().entrySet().stream()
.filter(entry -> cast.isInstance(entry.getValue()))
.collect(Collectors.toMap(Map.Entry::getKey, cast::cast));
}
HashMap<String, String> strings = (HashMap<String, String>) castObjects(String.class)
但我收到以下错误:
java.lang.ClassCastException: Cannot cast java.util.HashMap$Node to java.lang.String
你们知道我的 castObjects 方法哪里错了吗?
toMap 的第二个参数需要提取值并进行转换。
entry -> cast.cast( entry.getValue())
现在您正在尝试转换条目,因此出现错误。
当我尝试时,我没有得到异常。
public static void main (String[] args) throws java.lang.Exception
{
Map<String, Object> org = new HashMap<>();
org.put("one", "two");
org.entrySet().stream()
.filter(entry -> String.class.isInstance(entry.getValue()))
.collect(
Collectors.toMap(
Map.Entry::getKey,
entry -> String.class.cast(entry.getValue())
));
}
我尝试过类似的方法从 HashMap
(getObjects() returns 这个 HashMap<String, Object>
)
public <V> Map<String, V> castObjects(final Class<V> cast) {
return getObjects().entrySet().stream()
.filter(entry -> cast.isInstance(entry.getValue()))
.collect(Collectors.toMap(Map.Entry::getKey, cast::cast));
}
HashMap<String, String> strings = (HashMap<String, String>) castObjects(String.class)
但我收到以下错误:
java.lang.ClassCastException: Cannot cast java.util.HashMap$Node to java.lang.String
你们知道我的 castObjects 方法哪里错了吗?
toMap 的第二个参数需要提取值并进行转换。
entry -> cast.cast( entry.getValue())
现在您正在尝试转换条目,因此出现错误。
当我尝试时,我没有得到异常。
public static void main (String[] args) throws java.lang.Exception
{
Map<String, Object> org = new HashMap<>();
org.put("one", "two");
org.entrySet().stream()
.filter(entry -> String.class.isInstance(entry.getValue()))
.collect(
Collectors.toMap(
Map.Entry::getKey,
entry -> String.class.cast(entry.getValue())
));
}