【问题标题】:Instantiate Dictionary<T, U> in Java error在 Java 中实例化 Dictionary<T, U> 错误
【发布时间】:2011-06-05 17:39:14
【问题描述】:

在 C# 中

Dictionary<String, String> dictionary = new Dictionary<String, String>();

在 Java 中,此错误与

无法实例化类型 字典

可能出了什么问题?

在我的代码中,

dictionary.put("vZip", jsonUdeals.getString("vZip"));

我知道这听起来太琐碎了。但我不知所措!
如果 Dictionary 不这样做(我现在强烈怀疑),那么使用哪个 DataStructure。

【问题讨论】:

  • Java 编程的第一条规则:如果您对标准 API 中的特定类或方法有问题,请先阅读 API 文档,然后再执行其他操作。
  • 谢谢伙计。恕我直言,这也适用于 C#。 :) 我确实调查过了。只是我忽略了定义中的抽象这个词。 C# 也有 Dictionary 根本不是抽象的。另外,我也熟悉 Eclipse IDE

标签: java generics dictionary


【解决方案1】:

Dictionary 是一个遗留类。同样的事情可以用 hashmap 或 concurrentHashMap(如果需要同步 Java 8)

【讨论】:

    【解决方案2】:

    Dictionary 是 Java 中的一个抽象类。它也已过时;您应该改用Map 接口;类似:

    Map<String,String> map = new HashMap<String,String>();
    

    注意HashMap&lt;K,V&gt; 是一个具体的类,但我们将它分配给Map&lt;K,V&gt; 引用,它是一个接口。这是 Java 中推荐的样式,因为它允许您将 HashMap 切换为例如Hashtable 在稍后阶段,无需更改所有内容。

    【讨论】:

    • 从 C# 进入 java,我喜欢我所看到的 :)
    • @naveen:很快你就会被例如Java 泛型有多垃圾,缺少运算符重载等等……!
    • 我读过 Jon Skeet 的书很多,所以我知道 :) 虽然我更喜欢 Eclipse IDE,而不是 Visual Studio。重构完全是另一个层次
    • @naveen:你是我听说的第一个喜欢 Eclipse 而不是 Visual Studio 的人。总的来说,我喜欢开源,但 Visual Studio 是迄今为止我用过的最好的 IDE。虽然我确实希望 Eclipse 有朝一日能达到那个水平。
    【解决方案3】:

    使用HashMap如下:

    Map<String, String> dictionary = new HashMap<String, String>();
    

    【讨论】:

      【解决方案4】:

      字典是一个抽象类,使用Hashtable

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-16
        • 2013-05-09
        • 1970-01-01
        相关资源
        最近更新 更多