我想扩展Java的HashMap<K, V>
课程。我覆盖put(...)
方法,我想在某些情况下抛出异常。
由于基类的put
方法没有抛出异常,因此出现编译错误。
最佳解决方案是什么?
谢谢!
答案 0 :(得分:5)
您可以在子类中创建一个不会覆盖put
的方法,但必要时会调用原始put()
。这种方法将被允许抛出任何你想要的例外。
或者您可以抛出put
已经可能抛出的一个未经检查的例外(UnsupportedOperationException
,ClassCastException
,NullPointerException
,IllegalArgumentException
)或任何其他未经检查的例外情况异常(虽然建议不会这样,因为它们不会记录在Map
界面中)。
来自Map::put
Javadoc:
<强>抛出:强>
UnsupportedOperationException - 如果此地图不支持执行操作
ClassCastException - 如果指定键或值的类阻止它存储在此映射中
NullPointerException - 如果指定的键或值为null并且此映射不允许空键或值
IllegalArgumentException - 如果指定键或值的某些属性阻止它存储在此地图中
答案 1 :(得分:1)
您始终可以抛出源自RuntimeException
。