如何在不使用泛型的情况下限制ArrayList的元素

sar*_*sam 2 java generics arraylist

假设我有一Employee堂课.如何在不使用泛型的情况下实现ArrayList仅包含Employee元素?也就是说,没有Arraylist<Employee>,我如何限制ArrayList只添加Employee对象?

Jig*_*shi 8

扩展ArrayList并自定义add()和addAll()方法以检查要添加的对象是什么instanceof Employee


Hov*_*els 8

你可以使用一个包含私有ArrayList字段的包装类,比如名为employeeList,它有一个

public void add(Employee employee) {
   employeeList.add(employee);
}
Run Code Online (Sandbox Code Playgroud)

以及允许外部类以受控方式与ArrayList交互的任何其他必要方法.

我发现使用组合比继承更好.这样,如果你想从一个ArrayList更改为其他东西,比如一个LinkedList,甚至是一些完全不同的东西,你会有更轻松的时间.

  • 还有`addAll()` (3认同)

Mic*_*rdt 8

你可以使用Collections.checkedList()- 但为什么你不想使用泛型?