gpt4 book ai didi

java - 是否可以修复此类以使其不可变

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:52 25 4
gpt4 key购买 nike

我正在尝试修复以下类,使其变得不可变:

public class ImmutableList<E> implements Iterable<E> {
private List<E> internal;
public ImmutableList(List<E> l) {
this.internal = l;
}
public int size() {
return this.internal.size();
}
public E get(int i) {
return this.internal.get(i);
}
public Iterator<E> iterator() {
return this.internal.iterator();
}
}

但目前我没有成功,我的问题是我不知道 E 的类型,所以我不知道如何深度复制它。我想知道是否可以使类不可变?

提前致谢

最佳答案

您的类几乎“尽可能不可变”。没有完全通用的方法来处理任意泛型类型,因此您不必担心。

剩下的两个问题:

  • 您需要复制l -- 浅拷贝就足够了。 this.internal = new ArrayList<E>(l)会做的。
  • 如果internal.iterator()支持remove() ,那么您的列表类型的消费者可以删除元素。
  • 上课 final所以它不能以可变的方式被子类化。

关于java - 是否可以修复此类以使其不可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31168670/

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