问题

由于在Java中使用泛型,我最终必须实现具有Voidas返回类型的函数:

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是要走的路。


原文链接