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

    }

}