Java:如何封装集合

发布网友 发布时间:2022-04-25 22:24

我来回答

2个回答

热心网友 时间:2022-06-18 03:40

对于一般的成员变量,对其提供简单的getter/setter封装即可。而对于一个集合类,不能够这样做。 对于一个简单的成员变量,可以这样:

class Athlete {
private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
// ......

而如果是一个Set/List/Map或数组,应该:
[1]初始化这个集合类;
[2]提供对单个元素的add/remove;
[3]提供加入另一个集合的方法。如果是基于此初始化,则先保证当前集合无元素;
[4]对于getter方法,应该返回该集合的只读试图;
[5]提供当前集合size。

public class Game {
private Set<Athlete> players = new HashSet<Athlete>();// 1

public void addPlayer(Athlete one) {// 2
players.add(one);
}

public void removePlayer(Athlete one) {// 2
players.remove(one);
}

public void addPlayers(Set<Athlete> set) {// 3
Iterator<Athlete> iter = set.iterator();
while (iter.hasNext())
addPlayer(iter.next());
}

public void initializaPlayers(Set<Athlete> set) {// 3
if (getAttendNumbers() > 0)
players.clear();
players.addAll(set);
}

public Set<Athlete> getAllPlayers() {// 4
return Collections.unmodifiableSet(players);
}

public int getAttendNumbers() {// 5
return players.size();
}

热心网友 时间:2022-06-18 03:41

用修饰词限定访问权限

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com