gpt4 book ai didi

java - 原始到

转载 作者:搜寻专家 更新时间:2023-10-30 21:34:03 24 4
gpt4 key购买 nike

我只是不明白。

List list = new ArrayList();
List <? extends Object> list1 = list; // unchecked conversion warning.

由于 Object 是 Java 中的最高上限,我看不出出现警告的任何原因。

更新 1:

关于akf的回答:

我完全理解你在说什么。我已经知道了。但是<? extends Object> 是最高上限。这意味着你也有任何你想要的类型。基本上 == .

你可以在你的代码上试试这个,你会看到 ==

更新 2:

关于Sheng's answer :

List  list = new ArrayList ();
List.add("a");
List <? extends Runnable> list1 = list; //warning here

为什么这里没有警告?

List <?> list2 = list; // No warning here

更新 3:

我只是在重温上面的内容,仍然感到困惑。

由于编译器允许以下内容:

  1. List a = new ArrayList();

  2. 列表 b = a;

  3. 列表 c = a;//当然有警告

    for (Object obj : b) {}
    // I don't agree with your statements above that &lt;?&gt; cannot be

    // written in the for (:) loop as shown here
    for (Object obj : c) {}

两者都是允许的。所以我仍然不明白为什么在将 raw 分配给 < 时会出现未经检查的警告?扩展对象>

最佳答案

This question ,尤其是 this answer ,有更多关于 ? 之间区别的详细信息吗?扩展对象。我仍然没有找到任何说明为什么您会收到从 List 分配到 List

关于java - 原始到 <?扩展对象>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3543853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com