具有泛型返回类型的Java泛型类方法提供未经检查的转换警告

时间:2017-11-02 08:00:58

标签: java generics

修改 我发现第二个副本与我的问题最匹配并且是最有用的。

我有一个泛型类,它有一个带泛型返回类型的方法。返回类型的具体类在定义中给出。当我使用该方法时,编译器会提供未经检查的转换警告。

一个例子可以更好地解释它。

public class MyGenericClass<T> {
   public List<String> getStringList() {
      return new ArrayList<String>();
   }
}

public class Test {
   public static void main(String[] args) {
      MyGenericClass mgc = new MyGenericClass<>();
      List<String> myStringList = mgc.getStringList();
   }
}

main方法的最后一行导致编译器警告:

warning: [unchecked] unchecked conversion
            List<String> myStringList = mgc.getStringList();
                                                         ^
required: List<String>
found:    List

当我指定T时不会发生此问题。例如,当我将Integer用作T时,不会发生此问题。 在没有指定类型的情况下使用泛型类是不好的,但我无法理解为什么返回类型'List&lt; String&gt;'当我没有指定T时变成'List'。有没有人知道这背后的逻辑,你能指点我JLS的相关部分吗?

0 个答案:

没有答案