我正在为apache HttpClient包实现一个ResponseHandler
,如下所示:
new ResponseHandler<int>() {
public int handleResponse(...) {
// ... code ...
return 0;
}
}
但我希望handleResponse
函数不返回任何内容,即void
。这个是可能的吗?以下代码无法编译,因为void
不是有效的Java类型:
new ResponseHandler<void>() {
public void handleResponse(...) {
// ... code ...
}
}
我想我可以用Void
替换void
来返回一个Void
对象,但这并不是我真正想要的。 return :是否可以组织这种回调情况,使我可以从handleResponse
返回void
发布于 2011-04-06 22:58:33
泛型只处理对象类。泛型不支持void和基元类型,不能将它们用作参数化类型。您必须使用Void来代替。
你能说出你为什么不想使用Void
吗?
发布于 2011-04-06 23:47:21
Void
类型就是为这种情况而创建的:创建一个具有泛型返回类型的方法,其中的子类型可以是"void“。Void
的设计方式是不可能创建任何该类型的对象。因此,类型为Void
的方法将始终返回null
(或异常地完成),这几乎是您将要得到的结果。您确实需要在方法中放入return null
,但这应该只是一个很小的不便。
简而言之:一定要使用Void
。
发布于 2017-01-05 03:59:01
当您需要返回java.lang.Void
时,只需返回null
即可。
https://stackoverflow.com/questions/5568409
复制相似问题