明确指出java.util.Stack
是List
接口(interface)的LIFO堆栈实现。
人们自然会认为,由于 Stack
遵循 LIFO 范式,当有人尝试调用它从 继承的
又继承自 add
方法时,它应该抛出 UnsupportedOperationException
。 >ListCollection
。
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/