gpt4 book ai didi

java - S 是否扩展了 S 的 ArrayList 是语言中有用的构造还是只是语法副作用

转载 作者:行者123 更新时间:2023-11-30 07:56:33 24 4
gpt4 key购买 nike

可以向这个 s1 添加除 null 之外的任何内容吗? (并安全地分配给 temp )

<S extends ArrayList<S>>

语言中有用的结构还是语法副作用?我将 S 解释为一个 ArrayList 是否正确,它只能保存 ArrayLists 的 ArrayLists 的 ArrayLists 等对象?

public class Foo{
public static <S extends ArrayList<S>> void f1() {
S s1 = (S) new ArrayList<S>();

// s1.add( ???? ); // can anything be added here other than null?
S temp = s1.get(0);
}
}

最佳答案

您只能添加 s1 和 null在不将 s1 或其他对象转换为 S 的情况下对其进行转换:

s1.add(s1);
s1.add(s1.get(0));

您不知道该范围内的其他对象满足 S extends ArrayList<S>作为类型参数 S 的约束仅在此范围内声明。这就是为什么在方法签名中不在多个地方使用它的情况下为方法定义泛型类型参数被认为是不好的做法的原因。

关于java - S 是否扩展了 S 的 ArrayList 是语言中有用的构造还是只是语法副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42013307/

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