gpt4 book ai didi

java - 哈希表问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:05:41 25 4
gpt4 key购买 nike

我有一个有趣的问题,它需要使用 Hashtables;我正在为诺基亚的 S40 开发(符合级别 1.4)

我希望 Hashtable 工作的方式:

Hashtable table = new Hashtable();
table.put(1, "Hello World");

但是我得到了错误:

The method put(Object, Object) in the type Hashtable is not applicable for the arguments (int, String)

但是,当我创建一个对象引用并传递该引用时,它工作正常!为什么?!

工作示例:

Hashtable table = new Hashtable();
Integer test = new Integer(1);
table.put(test, "Hello World");

任何解释都会很棒!

最佳答案

在我的回答中,我认为您的实际代码实际上如下:

Hashtable table = new Hashtable();
table.put(1, "Hello World");

那是导致您所描述的错误的代码,即

The method put(Object, Object) in the type Hashtable is not applicable for the arguments (int, String)

原因是这样的:

  1. Java 1.4 不支持 generics ,因此 Hashtable 仅适用于 Objects(既作为键也作为值)

  2. Java 1.4 不支持 autoboxing ,所以代码 table.put(1, "Hello World") 不会自动自动装箱到 table.put(Integer.valueOf(1), "Hello World") .因此,您尝试调用与 Hashtable.put(Object, Object) 不兼容的 table.put(int, String)

瞧。

如果您使用 Java 1.5+,调用将自动装箱到 table.put(Integer, String)

顺便说一句,不要使用new Integer(1),始终首选静态工厂方法 Integer.valueOf(1) 。您可以避免不必要地创建冗余类。 This 是自动装箱被编译成的。看到这个:Static factory methods vs Instance (normal) constructors?

关于java - 哈希表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24735084/

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