有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (1) 个答案

  1. # 1 楼答案

    使用Object作为类型参数与使用?完全不同。请参见以下两种方法:

    void frobnicate1(List<?> someList);
    void frobnicate2(List<Object> someList);
    

    当它们从List中获得一个元素时,它们都会收到List,并且都会收到Object,但是{}可以用List<String>甚至List<?>调用,而frobnicate2只能被List<Object>(或null)调用

    请注意,不能使用通配符类型参数(?)实例化参数化类型

    因此,以下内容将不起作用:

    List<?> someList = new ArrayList<?>();
    

    您必须使用Object(或任何其他非通配符类型):

    List<?> someList = new ArrayList<Object>();
    

    不要担心显式强制转换:JVM可以对其进行优化(而且可能会),因为对Object的任何引用值的强制转换都会成功