加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 了解UnsupportedOperationException

发布时间:2020-12-15 05:18:21 所属栏目:Java 来源:网络整理
导读:我不太明白我可以在哪里抛出这个异常. 例如,我正在实施Future T界面,不希望任何人调用该方法: Future#get(long,TimeUnit). 那么,我可以抛出UnsupportedOperationException吗? public T get(long timeout,TimeUnit unit){ throw new UnsupportedOperationEx
我不太明白我可以在哪里抛出这个异常.

例如,我正在实施Future< T>界面,不希望任何人调用该方法:

Future#get(long,TimeUnit).

那么,我可以抛出UnsupportedOperationException吗?

public T get(long timeout,TimeUnit unit){
    throw new UnsupportedOperationException();
}

事情是该方法的规范没有说什么关于抛出异常.反过来,例外

throws to indicate that the requested operation is not supported.

Class UnsupportedOperationException

我的意思是,如果您不希望它被调用或者可能被认为是不正确的,因为并非所有方法都已实现,抛出它是否常见?在我的具体情况下,我认为调用该方法没有意义……

解决方法

技术上UnsupportedOperationException未选中,因此可以在任何您喜欢的地方抛出.但是将它扔到意想不到的地方会导致你的课程不那么容易使用,不推荐使用.

预期将抛出UnsupportedOperationException的位置在“可选操作”中. Java框架包含大量这些内容,尤其是在Collections框架中.例如“add” is an optional operation,因为不可变集合不应该允许它.如果您不想编写其中一种方法,则抛出UnsupportedOperationException正是您应该执行的操作.

在你的情况下,定时“获取”对于使用Future非常重要,如果你不实现它会引起一些惊喜.如果你打算这样做,请确保它有详细记录,并注意这将导致你的Future实现在某些情况下无法使用,并可能导致使用它的程序崩溃.

如果您根本没有资源为Future实现编写定时get,请考虑使用已存在的实现,例如从FutureTask扩展您的类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读