相关疑难解决方法(0)

<?>和<?之间有什么区别?在Java Generics中扩展Object>?

我已经看到之前使用的通配符表示任何对象 - 但最近看到使用:

<? extends Object>
Run Code Online (Sandbox Code Playgroud)

由于所有对象都扩展了Object,这两个用法是同义词吗?

java generics syntax

88
推荐指数
3
解决办法
4万
查看次数

Java中的无界通配符

无界通配符<?>和绑定通配符之间是否有区别Object,例如<? extends Object>

我记得曾经在某处看过,仿制药的早期草稿有所不同,但是找不到那个来源了.

java generics bounded-wildcard

19
推荐指数
2
解决办法
3467
查看次数

为什么编译器会对List <?>和List <?进行处理?不同地扩展Object>?

请考虑以下代码:

import java.util.ArrayList;
import java.util.List;

public class UnboundedWildcardProblem {

    public static void main(String[] args) {
        List<?> a = new ArrayList();
        List<? extends Object> b = new ArrayList();
    }
}
Run Code Online (Sandbox Code Playgroud)

创建List<?>不会产生任何警告,但创建List<? extends Object>会产生未经检查的警告:

Warning: java: unchecked conversion
  required: java.util.List<? extends java.lang.Object>
  found:    java.util.ArrayList
Run Code Online (Sandbox Code Playgroud)

我搜索了可能的原因并找到了一些讨论:

列表<?> vs List <?extends Object>

<?>和<?之间有什么区别?在Java Generics中扩展Object>?

但是看完这些讨论后,在我看来,List<?>List<? extends Object>有同样的事情.

那么,这种编译器行为的原因是什么?

编辑:

用于编译的单个标志是Xlint:unchecked标志.

java generics

10
推荐指数
1
解决办法
1026
查看次数

标签 统计

generics ×3

java ×3

bounded-wildcard ×1

syntax ×1