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())
                ));
}