gpt4 book ai didi

Java 泛型?扩展字符串

转载 作者:行者123 更新时间:2023-11-30 06:52:49 24 4
gpt4 key购买 nike

当我在回答一些泛型问题时,我遇到了这个例子。请你解释为什么list.add("foo")list = new ArrayList<Object>()包含编译问题?

在我的理解列表? extends String意思是“扩展字符串的列表”,但字符串是最终的?只能是字符串。在 list.add() 中,我们添加了一个字符串“foo”。那为什么会出现这个编译问题呢?

public class Generics {
public static void main(String[] args) {
}

public static void takelist(List<? extends String> list){
list.add("foo"); //-- > error
/*
* The method add(capture#1-of ? extends String) in the
* type List<capture#1-of ? extends String> is not applicable
* for the arguments (String)
*/

list = new ArrayList<Object>();
/*
* Type mismatch: cannot convert from ArrayList<Object> to List<? extends String>
*/
list = new ArrayList<String>();
Object o = list;
}

最佳答案

对于初学者来说,java.lang.String 类是final,这意味着没有任何东西可以扩展它。所以没有可以满足通用要求的类?扩展字符串

我相信这个问题会导致您看到的所有编译器错误/警告。

list.add("foo");                  // String "foo" does not extend String
list = new ArrayList<Object>(); // list cannot hold Object which does not extend String

关于Java 泛型?扩展字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38344648/

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