【问题标题】:How ArrayList work with unsupportedOperationException?ArrayList 如何与 unsupportedOperationException 一起工作?
【发布时间】:2017-11-19 20:18:35
【问题描述】:

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

作业描述如下:

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

我的问题是,我想知道为什么我的代码可以正常工作而没有在分配描述中提及上述要求。以及如何在我的代码中抛出新异常的上述功能? (无论如何要满足该分配要求)

以下是我目前的班级声明:

public class A1ArrayList<E>
{
...
}

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

【问题讨论】:

  • 试试public class A1ArrayList&lt;E&gt; implements List&lt;E&gt; {...。你可以在任何你喜欢的地方抛出未经检查的异常

标签: java list arraylist linked-list implements


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    更新

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

    【讨论】:

      【解决方案3】:

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

      如果你这样做,你会发现List API 中的所有方法都必须实现 ...不管你提到与否。

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


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

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

      【讨论】:

        猜你喜欢
        • 2023-02-02
        • 1970-01-01
        • 2017-08-09
        • 2011-10-13
        • 2015-06-07
        • 2018-07-13
        • 2012-06-22
        • 2011-07-20
        • 2021-07-14
        相关资源
        最近更新 更多