如果方法的返回types是Void,我该返回什么? (不是空的!)
由于在Java中使用generics,我最终不得不实现一个具有Void作为返回types的函数: 
 public Void doSomething() { //... } 
 编译器要求我返回一些东西 。 现在我只是返回null ,但我想知道如果这是好的编码习惯… 
 我也尝试过Void.class , void , Void.TYPE , new Void() ,根本没有任何回报,但所有这些都不起作用。  (或多或less显而易见的原因)(请参阅此答案的详细信息) 
-  那么如果函数的返回types是Void我应该返回什么呢?
-  什么是Void类的一般用法?
  编辑:只是为了节省您的downvotes:我问V oid,而不是v oid。 类Void , 而不是保留关键字void 。 
那么,如果函数的返回types必须是
Void我应该返回什么呢?
 使用return null 。  Void不能被实例化,仅仅是void Class<T>types的占位符。 
Void点是什么?
 如上所述,这是一个占位符。 例如,如果你使用reflection来查看返回types为void的方法,那么你将得到的结果是void 。  (从技术上说,你会得到Class<Void> 。它沿着这些线具有其他各种用途,就像你想参数化Callable<T> 。 
由于在Java中使用generics,我最终不得不实现这个function
我会说,如果你需要用这个签名来实现一个方法的话,那么你的API可能会有些时髦。 仔细考虑是否有更好的方法去做你想做的事(也许你可以在不同的后续问题中提供更多的细节)。 我有点怀疑,因为这只是“由于使用仿制药”而出现的。
没有办法实例化一个Void,所以你唯一可以返回的是null。
  return null是要走的路。 
为了弄清楚为什么你提出的其他build议不起作用:
  Void.class和Void.TYPE指向相同的对象,types为Class<Void> ,而不是Void 。 
 这就是为什么你不能返回这些值。  new Void()将是Voidtypes,但是该构造函数不存在。 事实上, Void没有公共的构造函数,所以不能被实例化:除了多态的null之外,你永远不能拥有任何types为Void对象。 
希望这可以帮助! 🙂
 如果由于模糊的原因,你必须使用这种types,那么确实返回null似乎是一个明智的select,因为我想返回值将不会被使用。 
 编译器会强制你返回一些东西。 
 而这个类似乎没有公共构造函数,所以新的Void()是不可能的。