gpt4 book ai didi

java - 在 Java 中使用通用 map 的问题

转载 作者:行者123 更新时间:2023-12-01 05:30:38 25 4
gpt4 key购买 nike

我尝试使用一个类来测试 HashMap 和 TreeMap,如下所示;

public class TestMap<KeyType, ValueType>
{
private Map<KeyType, ValueType> internalMap;

/*
* Entry point for the application
*/
public static void main( String [ ] args )
{
TestMap<String, Integer> testHashMap = new TestMap<String,Integer>(new HashMap<String, Integer>());
testHashMap.test();

TestMap<String, Integer> testTreeMap = new TestMap<String,Integer>(new TreeMap<String, Integer>());
testTreeMap.test();
}

/*
* Constructor which accepts a generic Map for testing
*/
public TestMap(Map<KeyType, ValueType> m)
{
this.internalMap = m;
}

public void test()
{
try
{
//put some values into the Map
this.internalMap.put("Pittsburgh Steelers", 6);

this.printMap("Tested Map", this.internalMap);
}
catch (Exception ex)
{

}
}

在尝试调用 put() 方法时,我收到以下错误消息;

The method put(KeyType, ValueType) in the type Map is not applicable for the arguments (String, int)

我没有收到任何其他警告,而且我不明白为什么会收到这个警告?这不是泛型的全部意义吗?笼统定义,具体实现?

感谢您的帮助!

最佳答案

test() 方法是 TestMap 类的一部分。在任何 TestMap 方法中,您只能引用通用类型,不能引用任何特定类型(因为这取决于个别实例)。但是,您可以这样做:

public static void main( String [ ] args )
{
TestMap<String, Integer> testHashMap = new TestMap<String,Integer>(new HashMap<String, Integer>());
testHashMap.internalMap.put("Pittsburgh Steelers", 6);

TestMap<String, Integer> testTreeMap = new TestMap<String,Integer>(new TreeMap<String, Integer>());
testTreeMap.internalMap.put("Pittsburgh Steelers", 6);
}

关于java - 在 Java 中使用通用 map 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12772733/

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