我正在为Apache HttpClient包实现ResponseHandler ,如下所示: new ResponseHandler<int>() { public int handleResponse(…) { // … code … return 0; } } 但我想为handleResponse函数返回什么,即void 。 这可能吗? 以下不编译,因为void不是一个有效的Javatypes: new ResponseHandler<void>() { public void handleResponse(…) { // … code … } } 我想我可以用voidreplacevoid来返回一个Void对象,但是这不是我想要的。 问 :是否有可能组织这种callback情况,使我可以返回void handleResponse ?
void run() { … if (done) return cancel(); … } 在那里cancel()返回void 。 这不会编译…我几乎可以理解为什么。 但是如果我想从虚空中回归一个虚空,为什么不呢? 相反,我最终写了这样的东西: if (done) { cancel(); return; } 我不是在寻找代码风格的build议,我想知道为什么Java明确禁止这种types的无效返回。 任何信息表示赞赏,谢谢。
前一段时间我使用std::function非常像这样: std::function<void(int)> func = [](int i) -> int { return i; }; 基本上,我这样做是因为我想在std::function存储不同的函数对象,但我不想限制这些函数的返回types。 既然这似乎有效,我就跟着去了。 但我不相信这是安全的使用,我一直没能find任何文件。 有谁知道这个用法是否合法? 或者更一般地说,可以安全地分配给std::function的对象的规则是什么? 编辑 澄清,我关心的问题是lambda函数返回一个int ,而func声明返回types为void 。 我不确定这是否行,尤其是一旦调用func() 。