A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 你的昵称 中级黑马   /  2016-7-9 08:23  /  429 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于一般的成员变量,对其提供简单的getter/setter封装即可。而对于一个集合类,不能够这样做。
对于一个简单的成员变量,可以这样:
  1. class Athlete {
  2.     private String name;

  3.     public String getName() {
  4.        return name;
  5.     }

  6.     public void setName(String name) {
  7.        this.name = name;
  8.     }
  9.     // ......
  10. }
复制代码

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

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

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

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

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

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

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

  22.     public int getAttendNumbers() {// 5
  23.        return players.size();
  24.     }
  25. }
复制代码

2 个回复

倒序浏览
自己得顶一下!@!!
回复 使用道具 举报
好复杂,好复杂,好复杂啊啊啊啊啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马