小编JoG*_*oGa的帖子

具有上限的通配符类型变量的迭代器

大家好,我尝试扩展一个HashMap<String,String>强制执行"全小写"规则

public class HttpQueryMap extends HashMap<String,String>
{    
    ...
    @Override
    public void putAll(Map<? extends String, ? extends String> m)
    {       
        ...
        Iterator<Map.Entry<String,String>> iterator = m.entrySet().iterator();
        ...      
    }
    ... 
}
Run Code Online (Sandbox Code Playgroud)

我收到编译时错误

incompatible types
required: Iterator<Entry<String,String>>
found:    Iterator<Entry<CAP#1,CAP#2>>
where CAP#1,CAP#2 are fresh type-variables:
CAP#1 extends String from capture of ? extends String
CAP#2 extends String from capture of ? extends String
Run Code Online (Sandbox Code Playgroud)

下一个解决方案可以完成这项工作,但实际上很难看:

public class HttpQueryMap extends HashMap<String,String>
{    
    ...
    @Override
    public void putAll(Map<? extends String, ? extends String> m)
    {       
        ... …
Run Code Online (Sandbox Code Playgroud)

java generics

8
推荐指数
1
解决办法
1521
查看次数

标签 统计

generics ×1

java ×1