Java - 扩展 ArrayList,使方法私有(private)化

标签 java arraylist private extend extends

我正在尝试扩展 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();
    }
}

最佳答案

继承不会为您提供所需的行为。请改用合成。使 ArrayList 实例成为您类的私有(private)成员,并且只允许访问其 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);
    }
}

关于Java - 扩展 ArrayList,使方法私有(private)化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32474290/

相关文章:

c++ - 以下代码片段是什么意思

java - 如何在java中将数组转换为二维数组

java - 使用 nextLine() 后无法创建测试条件

java - Logcat错误DataAdapter类中的构造函数数据适配器无法应用

java - 无法在 JAVA EE 中正确读取 ArrayList

c++ - C++中的静态构造函数?我需要初始化私有(private)静态对象

Java套接字连接异常问题(连接超时)

java - BlockingQueue : What are the differences between SynchronousQueue and LinkedBlockingQueue 的实现

java - ArrayList提前调用clear()?

java - 在父类(super class)中定义对私有(private)子类成员的相同处理