对于一般的成员变量,对其提供简单的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();

    }

}