Java 为什么AbstractList的设计使得某些方法总是抛出不支持的Dexception?

Java 为什么AbstractList的设计使得某些方法总是抛出不支持的Dexception?,java,Java,我试图学习AbstractList,我发现有些方法总是抛出异常,我的问题是为什么这样设计 /** * {@inheritDoc} * * <p>This implementation always throws an * {@code UnsupportedOperationException}. * * @throws UnsupportedOperationException {@inheritDoc} * @throws ClassCastException

我试图学习AbstractList,我发现有些方法总是抛出异常,我的问题是为什么这样设计

 /**
 * {@inheritDoc}
 *
 * <p>This implementation always throws an
 * {@code UnsupportedOperationException}.
 *
 * @throws UnsupportedOperationException {@inheritDoc}
 * @throws ClassCastException            {@inheritDoc}
 * @throws NullPointerException          {@inheritDoc}
 * @throws IllegalArgumentException      {@inheritDoc}
 * @throws IndexOutOfBoundsException     {@inheritDoc}
 */
public E set(int index, E element) {
    throw new UnsupportedOperationException();
}

public void add(int index, E element) {
    throw new UnsupportedOperationException();
}

Java语言设计人员使用这种方法,而不是添加可变和不可变的列表子类型,以避免集合类型层次结构中的爆炸。请参阅。

Java语言设计人员使用这种方法,而不是添加可变和不可变的列表子类型,以避免集合类型层次结构中的爆炸。请参阅。

这是一种常见的方法。想法是你将AbstractList子类化,并用实际实现覆盖这些方法。@MattGreer:那么为什么这些方法不能保持未实现状态呢。它的抽象类!!我想原因可能是他们不想强制执行。若他们把它作为抽象的,那个么子类必须提供实现。在这种情况下,它不是强制性的。这由实施者来决定。大多数情况下,为什么只有一组从事这项工作的语言设计师才能回答这个问题。这是一种常见的方法。想法是你将AbstractList子类化,并用实际实现覆盖这些方法。@MattGreer:那么为什么这些方法不能保持未实现状态呢。它的抽象类!!我想原因可能是他们不想强制执行。若他们把它作为抽象的,那个么子类必须提供实现。在这种情况下,它不是强制性的。这由实施者来决定。大多数情况下,只有一组致力于此的语言设计师才能回答为什么。