class Data {
 private String arg = null;
 public String get() {
  return arg;
 }
 public void set(String arg) {
  this.arg = arg;
 }
}

// このクラスはライブラリとして利用されるものとする。
class DataList {
 // listには Data型しか格納されない。
 private ArrayList list = new ArrayList();
 public Data get() {
  return (Data)list.get();
 }
 public void add(Data data) {
  list.add(data);
 }
}

これって普通だよな。