Java泛型void / Void类型

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (99)

我正在实现ResponseHandlerapache的HttpClient包,如下所示:

new ResponseHandler<int>() {
    public int handleResponse(...) {
        // ... code ...
        return 0;
    }
}

但我希望handleResponse函数不返回任何内容,即void。这可能吗?以下不编译,因为void它不是有效的Java类型:

new ResponseHandler<void>() {
        public void handleResponse(...) {
            // ... code ...
        }
}

我想我可以代替voidVoid返回一个Void对象,但是这并不是我真正想要的东西。:是否有可能组织这次回调的情况以这样的方式,我可以返回voidhandleResponse

提问于
用户回答回答于

泛型只处理对象类。无效和原始类型不受泛型支持,您不能将它们用作参数化类型。你必须改用Void。

你能说你为什么不想用Void

用户回答回答于

Void类型是为了这种确切的情况而创建的:创建一个具有泛型返回类型的方法,其中子类型可以是“void”。Void被设计成不可能创建该类型的对象。因此,类型的方法Void总是会返回null(或异常完成),这与您将要获得的内容几乎没有任何关系。您必须return null采用该方法,但这只会造成轻微的不便。

总之:请使用Void

扫码关注云+社区