将x元素从地图复制到另一个具有泛型的元素

时间:2013-01-17 12:12:00

标签: java generics

我搜索一种方法将x元素从地图复制到另一个地图。 我试过这段代码

private void newMapElement( Map<?, ?> userMap, Map<?, ?> newUserMap, int maxSize)
{
    int i = 0;
    for ( Map.Entry<?, ?> entry : userMap.entrySet() )
    {
        newUserMap.put( entry.getKey(), entry.getValue() );
            i++;
            if ( i == maxSize)
            {
                break;
            }
    }
}

但是java似乎不喜欢put。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

你必须将? super T用于 newUserMap ,因为带有超级(带有上边界的通配符)的通配符可以让你在地图中添加元素,你的代码应该如下所示:

private <T> void newMapElement( Map<? extends T, ? extends T> userMap, Map<? super T, ? super T> newUserMap, int maxSize)
{
    int i = 0;
    for ( Map.Entry<? extends T, ? extends T> entry : userMap.entrySet() )
    {
        newUserMap.put( entry.getKey(), entry.getValue() );
            i++;
            if ( i == maxSize)
            {
                break;
            }
    }
}