gpt4 book ai didi

Java封装&数组

转载 作者:行者123 更新时间:2023-11-29 04:51:51 24 4
gpt4 key购买 nike

返回数组内容的副本而不是直接引用是否会提高类的封装性?我想知道这是否被认为是最佳做法。

最佳答案

如果我没理解错的话,你是在尝试封装一个集合。如果您提供直接引用,则不会对集合进行封装。用户可以对集合做任何他们想做的事情——甚至可以将它设置为 null。如果您向用户提供集合的深拷贝,那么当他们修改该副本时,他们不会修改您类(class)中的集合。

最佳做法是通过从不向用户提供对集合的引用来封装整个集合。相反,他们将通过类方法与它交互。如果他们需要遍历整个集合,那么最好在集合上返回一个迭代器,这将提供对它的只读访问。

例如,我们有一个 BookCollection 类,它有一个私有(private)列表作为数据成员。如果我们希望代码的消费者能够添加和删除书籍等,我们将为他们提供执行此操作的方法。

这是我的示例代码:

public class BookCollection {
private List<Book> books;

public BookCollection() {
this.books = new ArrayList();
}

public void addBook(Book book) {
this.books.add(book);
}

public void removeBook(Book book) {
this.books.remove(book);
}

public Book get(int index) {
return this.books.get(index);
}

// etc.

public Iterator<Book> getIterator() {
return this.books.iterator();
}
}

关于Java封装&数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35166747/

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