Java - 扩展ArrayList,使方法变得私有

Jav*_*mer 3 java extends private arraylist extend

我试图扩展ArrayList只使添加功能可用.然后我创建了一个AlExtend的对象,但除了add()之外我仍然可以访问所有其他方法.如何创建允许AlExtend对象仅使用add()函数的代码?

    import java.util.ArrayList;
public class AlExtend<E> extends ArrayList<E> {

    public AlExtend() {
        super();
    }

    @Override
    public boolean add(E e) {
        return super.add(e);
    }
 }

  public class main {
    public static void main(String[] args) {
          ALExtend<String> list = new ALExtend<String>();       
          list.add("fg");
          list.clear();
    }
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

继承不会给你想要的行为.改用构图.使ArrayList实例成为类的私有成员,并且只允许访问其add方法.

import java.util.ArrayList;
public class AlExtend<E> 
{
    private ArrayList<E> list = new ArrayList<E> ();
    public AlExtend() {
        super();
    }

    public boolean add(E e) {
        return list.add(e);
    }
}
Run Code Online (Sandbox Code Playgroud)