java - 为什么java中的Stack类不会在 'add'方法上抛出UnsupportedOperationException?

标签 java collections interface

明确指出java.util.StackList接口(interface)的LIFO堆栈实现。
人们自然会认为,由于 Stack 遵循 LIFO 范式,当有人尝试调用它从 继承的 add 方法时,它应该抛出 UnsupportedOperationException 。 >List 又继承自 Collection
add 方法是一个可选操作。即不一定需要实现来实现它们,而可以在调用时抛出 UnsupportedOperationException
堆栈应该自然地这样做,因为它是一个堆栈,因此您只能在最后添加新元素。 我很惊讶 add(int index,E e) 方法实际上适用于 Stack 对象!如果您可以在堆栈中的任何位置添加元素而不仅仅是末尾,那么就违背了堆栈的目的

最佳答案

extends Vector ,因此支持诸如 get(int)add(int,E) 之类的操作。这是一个众所周知的奇怪的事情,被认为是 design mistake许多人。你所说的它违背了堆栈的目的是正确的。

关于java - 为什么java中的Stack类不会在 'add'方法上抛出UnsupportedOperationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28536829/

相关文章:

java - 无法捕获且不会停止程序的错误

c# - 寻找需要多个接口(interface)继承(而不是实现)的示例/案例

go - 如何实现两个具有相同方法名和不同参数的接口(interface)

java - Iterator for Java Framework Collection 的不同结果

c# - 如何使用复合键索引集合

java - 如何在Java中正确实现MVC模式?

java - 滚动日志文件未被清除

java - 如何在 Java 的同一个项目中使用同一个库的两个版本?

java - JSP 字符串格式化截断

java - ArrayList - 如何修改对象的成员?