ArrayList 如何处理 unsupportedOperationException?

How ArrayList work with unsupportedOperationException?

我被指派实现我自己的 Arraylist 和 Linkedlist,它们的工作方式与 Java 在 Java.util.* 中提供的 ArrayList 和 LinkedList 非常相似,但不是所有方法,而是其中一些方法。

作业说明如下:

所以听起来我必须为我不打算实现的每个方法在我的代码中实现上面的代码。但是,我的源代码在没有实现上述内容的情况下工作正常。我只是根本不提那些没有分配给我实现的方法。

我的问题是,我想知道为什么我的代码在没有在作业描述中提及上述要求的情况下工作正常。我怎样才能在我的代码中抛出新的异常来实现上述功能? (无论如何都要满足分配要求)

以下是我目前的class声明:

public class A1ArrayList<E>
{
...
}

我是否必须扩展或实现 Java 列表 API 中的某些内容才能使用该函数并抛出异常?

是的,您需要实现 List 接口。

public class A1ArrayList<E> implements List<E>
{
...
}

通常您在实施或扩展 interface/class 时使用 UnsupportedOperationException,这会强制您实施您不想提供实施的给定方法。最好使用异常而不是空方法的原因是,当它被另一个不应该调用它的代码调用时,您可以立即看到它。

在这种情况下,如果您没有实现 List(或任何其他接口)接口,则无需提供任何需要抛出 UnsupportedOperationException.

的方法

更新

如果你真的需要让你的 class 成为 Java List 那么你可以扩展 AbstractList 而不是实现 List。

你要抛出 UnsupportedOperationException 这一事实意味着你的 类 应该实现 java.util.List 或扩展 java.util.AbstractList。 (再次检查要求!)

如果你这样做,你会发现List API 中的所有方法都必须实现 ...无论你提到它们还是没有。

注意:如果您的代码既没有实现 java.util.List 也没有扩展 java.util.AbstractList,那么它将不会被识别为 List 的子类。这可能会导致它无法通过您的老师将要用于评分的(假设的)测试。


Do I have to extends or implements something from Java's list API to work with that function with exception throwing?

这取决于您的作业的(完整)要求是什么....