首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java泛型void/Void类型

Java泛型void/Void类型
EN

Stack Overflow用户
提问于 2011-04-06 22:53:35
回答 6查看 60K关注 0票数 86

我正在为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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-04-06 22:58:33

泛型只处理对象类。泛型不支持void和基元类型,不能将它们用作参数化类型。您必须使用Void来代替。

你能说出你为什么不想使用Void吗?

票数 69
EN

Stack Overflow用户

发布于 2011-04-06 23:47:21

Void类型就是为这种情况而创建的:创建一个具有泛型返回类型的方法,其中的子类型可以是"void“。Void的设计方式是不可能创建任何该类型的对象。因此,类型为Void的方法将始终返回null (或异常地完成),这几乎是您将要得到的结果。您确实需要在方法中放入return null,但这应该只是一个很小的不便。

简而言之:一定要使用Void

票数 93
EN

Stack Overflow用户

发布于 2017-01-05 03:59:01

当您需要返回java.lang.Void时,只需返回null即可。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5568409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档