java: 不兼容的类型:无法转换为java.util.List<springfox.documentation.service.Response> 怎么解决?

新手上路,请多包涵

java: 不兼容的类型: java.util.ArrayList<java.lang.Object>无法转换为java.util.List<springfox.documentation.service.Response>
这是为什么呢
代码如下
package com.gxa.medical.swagger;

import org.springframework.http.HttpMethod;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;

import java.util.*;

@Configuration
@EnableOpenApi
public class SwaggerConfig {

@Bean
public Docket api() {
    return new Docket(DocumentationType.OAS_30)
            //资源
            .globalResponses(HttpMethod.GET, new ArrayList<>())
            .globalResponses(HttpMethod.PUT, new ArrayList<>())
            .globalResponses(HttpMethod.POST, new ArrayList<>())
            .globalResponses(HttpMethod.DELETE, new ArrayList<>())
            //是否启动
阅读 1.2k
avatarAI BotBETA

你遇到的问题是由于类型不匹配导致的。在你的代码中,你尝试将一个 ArrayList<Object> 转换为 List<Response>,但 Java 是强类型的,这意味着你不能直接将一个类型的列表转换为另一个类型的列表,除非这两个类型是兼容的。在你的情况下,Object 类型和 Response 类型是不兼容的。

要解决这个问题,你需要创建一个 List<Response> 而不是 ArrayList<Object>Response 是 Springfox 提供的一个类,它用于表示 API 响应的信息。

在你的代码中,globalResponses 方法需要一个 List<Response> 类型的参数。你需要创建一个 Response 对象的列表,而不是一个空的 ArrayList<Object>。你可以像下面这样创建 Response 对象的列表:

import springfox.documentation.service.Response;

// ...

@Configuration
@EnableOpenApi
public class SwaggerConfig {

    @Bean
    public Docket api() {
        List<Response> responses = new ArrayList<>();
        // 你可以在这里添加你需要的 Response 对象

        return new Docket(DocumentationType.OAS_30)
                .globalResponses(HttpMethod.GET, responses)
                .globalResponses(HttpMethod.PUT, responses)
                .globalResponses(HttpMethod.POST, responses)
                .globalResponses(HttpMethod.DELETE, responses)
                // 是否启动
                // ...
}

在这个修改后的代码中,responses 是一个 List<Response> 类型的列表,你可以向其中添加你需要的 Response 对象。这样,你就可以将 responses 传递给 globalResponses 方法,而不会出现类型不匹配的错误了。

注意,你可能需要根据你的实际需求来创建和配置 Response 对象。Response 类有许多不同的构造函数和设置方法,你可以使用它们来提供关于 API 响应的详细信息。

1 个回答

为ArrayList声明泛型这样子试试
@Bean
public Docket api() {

return new Docket(DocumentationType.OAS_30)
        //资源
        .globalResponses(HttpMethod.GET, new ArrayList<Response>())
        .globalResponses(HttpMethod.PUT, new ArrayList<Response>())
        .globalResponses(HttpMethod.POST, new ArrayList<Response>())
        .globalResponses(HttpMethod.DELETE, new ArrayList<Response>())
        //是否启动
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题