Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何基于ArrayList.util实现自定义ArrayList,而不需要删除元素_Java_Arraylist - Fatal编程技术网

Java 如何基于ArrayList.util实现自定义ArrayList,而不需要删除元素

Java 如何基于ArrayList.util实现自定义ArrayList,而不需要删除元素,java,arraylist,Java,Arraylist,我想实现ArrayList,它不允许用户(或程序)从中删除元素。我想保留ArrayList的其余功能。 问题是什么是更好的方法:扩展ArrayList还是扩展AbstractList,以及如何禁止删除(例如阴影)?常见的方法是抛出UnsupportedOperationException 在方法的实现中。抛出此异常 从将不使用但 它们是已使用的公共API的一部分 如果你想完全实现所有的方法 然后您应该使用列表界面。 否则-使用提供的抽象变量或 直接从所需的实现扩展 并重写默认行为。公共类NotR

我想实现ArrayList,它不允许用户(或程序)从中删除元素。我想保留ArrayList的其余功能。
问题是什么是更好的方法:扩展ArrayList还是扩展AbstractList,以及如何禁止删除(例如阴影)?

常见的方法是抛出
UnsupportedOperationException
在方法的实现中。抛出此异常 从将不使用但 它们是已使用的公共API的一部分

如果你想完全实现所有的方法 然后您应该使用
列表
界面。 否则-使用提供的抽象变量或 直接从所需的实现扩展 并重写默认行为。

公共类NotRemovableArrayList扩展了ArrayList{
public class NotRemovableArrayList<T> extends ArrayList<T> {
    @Override
    public boolean remove(Object o) {
        throw new UnsupportedOperationException();
    }

    ...
}
@凌驾 公共布尔删除(对象o){ 抛出新的UnsupportedOperationException(); } ... }
您是否考虑过使用“更好的方式”在这里是一个非常模糊的表达方式?如何衡量解决方案的优点?感谢大家的回答,但我只需要禁止删除,因此Collections.unmodifiableList不适合,因为它不允许修改数据“问题是什么是更好的方法:扩展ArrayList还是扩展AbstractList”。问题是什么是更好的方法:扩展ArrayList还是扩展AbstractList“@ErwinBolwidt And?”?答案的第二部分特别提到了这一点。