当前位置: 首页 > 知识库问答 >
问题:

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

邹慈
2024-04-30

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 {

@Beanpublic 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<>())            //是否启动

共有2个答案

余歌者
2024-04-30

为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>())        //是否启动
呼延烈
2024-04-30

你遇到的问题是由于类型不匹配导致的。在你的代码中,你尝试将一个 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@EnableOpenApipublic 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 响应的详细信息。

 类似资料:
  • 我收到一个错误,指出ArrayList不能在我的上转换为int 我正在编写一个程序,在这个程序中,我必须从一个文件中读取所有整数,并计算它们的总和。我还处理所有异常,因此如果抛出异常,函数应该返回0。 这是我的代码: 下面是我的单元测试,读取文件后应该通过: 感谢您的帮助。 谢谢!

  • 问题内容: 一般来说,对于Java和编程,我是一个新手。我正在尝试创建一个简单的程序,您可以在其中猜测我的年龄,如果您是对的,它将说“正确”,如果您错了,它将说“错”。 这是我的代码: 我收到错误消息“不兼容的类型:void无法转换为int”,但代码中没有void类?我知道我的代码可能很糟糕,但是如果你们能为我指出正确的方向,那就太好了。谢谢。 问题答案: 您的程序不必返回in 。相反,您可以将其

  • 我试图通过在一个单独的线程上进行工作并返回所需的对象来更改JavaFX中的GUI。然而,在完成工作和任务之后。setOnSucceeded()在尝试检索创建的对象时被触发,并出现错误“不兼容类型:对象无法转换为VideoScrollPane类型”。 我认为这与原始类型有关,因为这是在听众中发生的,但环顾四周后,我找不到我想要的建议。 任何可以散发的光芒都将不胜感激。

  • 问题内容: Java编译消息是什么: 的意思,以及如何解决。一些编译器使用不同的措词;例如 要么 (这旨在对涉及“ void”的非常具体的编译错误消息进行规范的问答,该错误消息会使新的Java程序员感到困惑。它的目的并非是关于Java中可能遇到的各种不同的“类型转换”问题的教程。 ) java 编译器错误 类型转换 无效 问题答案: 快速回答 编译器告诉你正在尝试使用不返回结果的方法的“结果”。

  • 问题内容: 我试图通过在单独的线程上进行工作并返回所需的对象来对JavaFX中的GUI进行更改。但是,在完成工作和task.setOnSucceeded()之后,我尝试检索创建的对象并得到错误“不兼容的类型:对象无法转换为VideoScrollPane类型”。 我认为这与原始类型有关,因为它发生在侦听器中,但是四处查看后,我找不到我想要的建议。 任何可以散发出的光将不胜感激。 问题答案: 这是因为

  • 而当运行时,我收到的是: 错误:不兼容类型:int无法转换为客户端ClientDAO.Delete(clientId);