问题
由于在Java中使用泛型,我最终必须实现具有Void
as返回类型的函数:
public Void doSomething() {
//...
}
并且编译器要求我返回一些东西。现在我刚回来null
,但我想知道这是不是很好的编码实践...
我也尝试了Void.class
,void
,Void.TYPE
,new Void()
,完全没有回报,但所有这些根本不起作用。 (或多或少有明显的原因)(详见this answer)
- 那么如果函数的返回类型是Void,我应该返回什么?
- Void类的一般用途是什么?
编辑:只是为了免除你的downvotes:我问的是Void,notvoid。类Void
,不是保留关键字void
。
#1 热门回答(100 赞)
那么如果函数的返回类型必须是Void,我应该返回什么?
Usereturn null
.Void
无法实例化,仅仅是Class<T>
type of void
的占位符。
Void有什么意义?
如上所述,它是一个占位符。例如,如果你使用反射来查看返回类型为void
的方法,那么你将得到什么。 (从技术上讲,你会得到Class<Void>
。)它有这些方面的其他各种用途,比如你想参数化aCallable<T>
。
由于在Java中使用泛型,我最终不得不实现这个功能
如果你需要使用此签名实现一个方法,我会说你的API可能会有些问题。仔细考虑是否有更好的方法来做你想做的事情(也许你可以在另一个后续问题中提供更多细节?)。我有点怀疑,因为这只是"由于使用仿制药"而出现的。
#2 热门回答(23 赞)
没有办法实例化一个Void,所以你唯一能回复的就是null。
#3 热门回答(18 赞)
return null
是要走的路。