我正在编写扩展ArrayList类的算法。在这里,使用算法类的实例,可以调用ArrayList的所有方法。我如何限制只能调用算法类中定义的方法,算法类只能访问所有通过自己的方法ArrayList的方法? 谢谢
答案 0 :(得分:0)
请勿扩展ArrayList
。而是将其实例化为私有成员字段。这样,您就可以完全控制列表。例如
public class YourList<T> {
private ArrayList<T> list;
public YourList() {
list = new ArrayList<>();
}
// example method
public void add(T t) {
list.add(t);
}
}
我添加了类型参数T
,因为您不想使用原始类型。您将像这样使用它
YourList<String> list = new YourList<>();
list.add("String");
YourList<Integer> otherList = new YourList<>();
list.add(1);
等
答案 1 :(得分:0)
您不必“强迫”用户调用您的子类。
根据设计,在给定ArrayList
子类的实例的情况下,Java将仅运行子类中重写的方法。超类ArrayList
将提供API(您不能阻止其他类访问超类中声明的公共方法),但是所有重写的方法都将按照子类中的定义运行。
您的子类然后可以选择在适当时使用ArrayList
关键字在super
中运行方法实现。