考试中的问题是:编写一个名为 Registration 的类,它可以存储 T 类型的变量,其中 T 可以替换为 String、Person、Student 等。应该可以按如下方式实例化 Registration:
Registration<String> r1 = new Registration<String>();
Registration<Person> r2 = new Registration<Student>();
我无法弄清楚如何为类头的泛型部分编写声明。下面我给出了注册类。需要注意的是,Student 类继承了 Person 类。
import java.util.List;
import java.util.ArrayList;
public class Registration<T extends Person> //I believe my issue is here{
private T [] roster;
private List<T> waitList;
private static int rosterCount;
private T lastInstance;
public Registration () {
roster = (T[]) new Object[100];
waitList = new ArrayList<>();
rosterCount = 0;
lastInstance = null;
}
public void addIndex (T t) {
if (rosterCount>=100) {
waitList.add(t);
}
else {
roster [rosterCount] = t;
rosterCount++;
}
lastInstance = t;
}
public T getLastInstance() {
return lastInstance;
}
public int getRosterCount() {
return rosterCount;
}
public int getWaitListCount() {
return waitList.size();
}
}
**取自 Uoft CSC207 Aug2017 考试