Java 泛型 void/Void types

2022-08-31 11:01:27

我正在为apache HttpClient包实现一个,如下所示:ResponseHandler

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

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

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

我想我可以替换返回一个对象,但这不是我想要的。问题:是否有可能以这样一种方式组织此回调情况,以便我可以从中返回?voidVoidVoidvoidhandleResponse


答案 1

该类型就是针对以下确切情况创建的:创建一个具有泛型返回类型的方法,其中子类型可以是“void”。 其设计方式使得无法创建该类型的对象。因此,类型方法将始终返回(或完全异常),这与您将要获得的接近于一无所有。您确实必须输入该方法,但这应该只是一个轻微的不便。VoidVoidVoidnullreturn null

简而言之:请使用 .Void


答案 2

泛型仅处理对象类。泛型不支持 void 和基元类型,并且不能将它们用作参数化类型。您必须改用 Void。

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