gpt4 book ai didi

java - 为什么 CopyOnWriteArrayList 使用 getArray() 来访问数组引用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:25 25 4
gpt4 key购买 nike

CopyOnWriteArrayList 中的几乎所有方法都使用 getArray() 而不是直接调用数组。这种行为有原因吗?例如:

public int size() {
return getArray().length;
}

    public int indexOf(Object o) {
Object[] elements = getArray();
return indexOf(o, elements, 0, elements.length);
}

最佳答案

“他们为什么要那样设计” 问题总是一个猜测问题。这个也是……除非代码的作者 (Doug Lea) 向我们解释他的想法。

但是,我认为主要原因是文体。

  • array 变量声明为private

  • getArray 方法声明为私有(private)包,注释如下:

    // Gets the array. Non-private so as to also be accessible 
    // from CopyOnWriteArraySet class.

如果没有方法,则需要将 array 变量本身声明为包私有(private)。我认为(我怀疑 Doug 也认为)包私有(private) getter 比包私有(private)字段好得多。 (出于所有标准原因。)如果存在 getter 和 setter,则使用它们是合理的。

相关问题 (Why setArray() method call required in CopyOnWriteArrayList) 解释了为什么在明显不必要的地方调用 setArray。但这是一个正交问题。

关于java - 为什么 CopyOnWriteArrayList 使用 getArray() 来访问数组引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47030394/

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