gpt4 book ai didi

java - 为什么我不能将 HashMap 设置为 HashMap

转载 作者:搜寻专家 更新时间:2023-11-01 01:46:50 27 4
gpt4 key购买 nike

虽然 String 实现了 CharSequence,但 Java 不允许这样做。做出此设计决定的原因是什么?

最佳答案

之所以禁止这样做是因为它不是类型安全的:

public class MyEvilCharSequence implements CharSequence
{
// Code here
}

HashMap<CharSequence, CharSequence> map = new HashMap<String, String>();
map.put(new MyEvilCharSequence(), new MyEvilCharSequence());

现在我尝试将 MyEvilCharSequence 放入 String 映射中。大问题,因为 MyEvilCharSequence 绝对不是 String

但是,如果你说:

HashMap<? extends CharSequence, ? extends CharSequence> map = new HashMap<String, String>();

这样就可以了,因为编译器会阻止您将非 null 项添加到 map 中。此行将产生编译时错误:

// Won't compile with the "? extends" map.
map.put(new MyEvilCharSequence(), new MyEvilCharSequence());

See here有关通用通配符的更多详细信息。

关于java - 为什么我不能将 HashMap<CharSequence,CharSequence> 设置为 HashMap<String,String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7112142/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com