gpt4 book ai didi

java - java中函数如何实现泛型

转载 作者:行者123 更新时间:2023-12-01 17:32:59 25 4
gpt4 key购买 nike

我正在准备OCJP 。我在转储中发现了一个问题

import java.util.*;
public class G1 {
public void takeList(List<? extends String> list) {
// insert code here
}
}

在第 6 行独立插入的哪三个代码片段能够编译? (选择三项。)

 A. list.add("foo");
B. Object o = list;
C. String s = list.get(0);
D. list = new ArrayList<String>();
E. list = new ArrayList<Object>();

答案:B、C、D

我有一个查询,如果 List<? extends String这意味着它与 String 类以及 String 类的所有子类匹配。

任何人都可以证明此处显示的答案是合理的吗?

最佳答案

A 不正确,因为您的列表可能是 List<SomeStringSubClass> ,因此向其中添加字符串是无效的。 (我知道 String 是最终的,但编译器在这里不关心它)。

E 不正确,因为 List<Object>无法分配给 List<? extends String> ,显然,因为 List<Object> 包含的对象不一定是 String 类型或 String 的子类。

其他三个都可以:

  • B 是可以的,因为除了原语之外的所有东西都是 Java 中的对象
  • C 可以,因为 List<? extends String>包含 String 的实例或 String 子类的实例。子类的实例也是父类(super class)的实例。
  • D 可以,因为 ArrayList<String>List<String> ,以及 List<String>也是List<? extends String>

关于java - java中函数如何实现泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9211120/

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