通配符的意思是“值类型参数可以是任何东西”- 并不 意味着“您可以像使用任何想要的东西一样使用它”。换句话说,a
Map<String,UUID>作为
Map<String, ?>- 是有效的,但是您不希望能够将String值放入其中。
如果您想要一个绝对可以接受字符串值的映射,则需要:
Map<String, ? super String>

通配符的意思是“值类型参数可以是任何东西”- 并不 意味着“您可以像使用任何想要的东西一样使用它”。换句话说,a
Map<String,UUID>作为
Map<String, ?>- 是有效的,但是您不希望能够将String值放入其中。
如果您想要一个绝对可以接受字符串值的映射,则需要:
Map<String, ? super String>