根据擦除概念,我认为
ListList<Object>是相同的,但我注意到

List<String> strList = new ArrayList<String>();
        List<Object> objList = strList; //error
        List objList = strList; //valid construction
        List<?> objList = strList; //valid construction

最佳答案

  • List<?>是类型未知的列表。您不能在此处插入
    因为您不知道将允许插入哪种类型。它
    具有(或不具有)泛型类型,但是您无法知道它。如果
    您可能要插入一些内容(首先键入列表)
    违反某些规定,因此您不应该这样做。
  • List<Object>是一个列表,您可以在其中插入任何对象,以及何时插入
    您得到的物品(起初只知道)是一个对象(并且
    您已经知道)。
  • List仅允许向后兼容(我认为)。之前
    Java 5没有泛型。 Java需要允许之间的类型转换ListList<Anything>,以便旧代码可以与现代代码一起使用。
  • 10-08 18:50