【问题标题】:How to solve the following warning? [closed]如何解决以下警告? [关闭]
【发布时间】:2013-11-30 13:31:39
【问题描述】:

类型安全:方法 put(Object, Object) 属于原始类型 HashMap。对泛型 HashMap 的引用应该被参数化。

【问题讨论】:

    标签: java jsp


    【解决方案1】:

    可能在你的代码中的某个地方

    Map map = new HashMap();
    

    您应该在哈希图中使用 keysvaluestypes 参数化它。例如,如果你使用 String 键和 SomeObject 对象,你应该使用:

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

    【讨论】:

    【解决方案2】:

    使用泛型定义您的集合,如下所示。

    List&lt;String&gt; list=new ArrayList&lt;String&gt; ();

    对于您的情况,它是一张地图,因此您可以使用

    Map&lt;String,String&gt; map=new HashMap&lt;String,String&gt;();

    如果您将immutable 对象定义为keys 就像String class 一样,这将是一个好习惯

    【讨论】:

      【解决方案3】:

      创建hashmap的正确方法是

      HashMap<String, Integer> hashmap = new HashMap<String, Integer>();
      

      你可以用你想要的任何类来替换 String 和 Integer。第一个是所有键必须是的类,第二个是所有值必须是的类。

      【讨论】:

        【解决方案4】:

        理想情况下,您不应该使用它。使用泛型集合类型时,您希望更具体地了解将作为键和值对象放入映射中的对象类型。泛型有助于强制执行所谓的编译时类型检查。

        但是,如果您仍然坚持使用它,那么请在您收到此警告的方法上或发出此警告的代码语句上方使用 @SuppressWarnings("unchecked") 注释。但是,在您从映射中获取对象并在您的代码中使用之后,您就有责任强制转换对象的类型。由于跨继承层次结构的错误类型案例导致的代码问题只有在 jvm 抛出类种姓异常时才会在运行时可见。

        【讨论】:

          【解决方案5】:

          你有一个通用的HashMap&lt;T1, T2&gt; 并尝试向它添加一个不是 T1 和 T2 类型的键值对。 IE。你有:

          HashMap<T1, T2> map = ...;
          Object o1
          Object o2;
          // ...
          map.put(o1, o2);     // generates warning
          

          你想要:

          HashMap<T1, T2> map = ...;
          T1 o1;
          T2 o2;
          // ...
          map.put(o1, o2);     // no warning - notice the types!
          

          这是因为 Java 中的泛型只是模拟的。 HashMap&lt;T1, T2&gt; 类型只存在于编译时,它确实是一种更好的方式来声明你的好旧的非泛型 HashMap。因此,它仍然具有原始的put(Object, Object) 方法。在其他语言中,例如 C#,该方法将不存在,而您将使用 put(T1, T2) 方法。

          有关详细信息,请参阅What is wrong with Java's generics?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-04-29
            • 1970-01-01
            • 2012-06-14
            • 2017-11-22
            • 1970-01-01
            • 1970-01-01
            • 2013-03-20
            相关资源
            最近更新 更多