ArrayList如何使用unsupportedOperationException?

时间:2017-06-17 00:36:37

标签: java list arraylist linked-list implements

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

作业说明如下: enter image description here

所以听起来我必须在我的代码中为我不会实现的每个方法实现上面的代码。但是,我的源代码工作正常,没有实现上面的东西。我只是甚至没有提到那些我没有被指派实施的方法。

我的问题是,我想知道为什么我的代码工作正常而没有在赋值说明中提及上述要求。如何在我的代码中抛出新的异常以上功能? (无论如何都要满足这个任务要求)

以下是我的班级声明:

public class A1ArrayList<E>
{
...
}

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

3 个答案:

答案 0 :(得分:1)

是的,您需要实现List界面。

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

答案 1 :(得分:0)

通常在实现或扩展接口/类时使用UnsupportedOperationException,这会迫使您实现不希望提供实现的给定方法。使用异常而不是空方法更好的原因是,当它被另一个不想调用它的代码调用时,你可以立即看到它。

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

<强>更新

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

答案 2 :(得分:0)

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

如果您这样做,您会发现必须实施List API 中的所有方法 ...无论您是否提及它们。

注意:如果您的代码没有实现java.util.List或扩展java.util.AbstractList,那么它将不会被识别为List的子类。这可能会导致您的老师将用于标记的失败(假设)测试。

  

我是否必须使用Java的列表API扩展或实现某些功能,以便在抛出异常时使用该功能?

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