webclient.requestheadersspec是原始类型

mnemlml8  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(1399)

我收到了一个奇怪的警告 WebClient.RequestHeadersSpec 我不知道我应该把什么类型的人带进监狱 WebClient.RequestHeadersSpec<?> 作为初始化的一部分 requestSpec .

WebClient.RequestHeadersSpec requestSpec = webClientBuilder.build().get().uri(uri);

    try {
          return requestSpec
              .header("Content-Type", HEADER_VALUE_CONTENT_TYPE)
              .retrieve()
              .bodyToMono(String.class)
              .timeout(Duration.ofMillis(config.getTimeoutInMilliseconds()))
              .block();

    } catch (WebClientResponseException e) {   // do something }

webclient.requestheadersspec是原始类型。对泛型类型webclient.requestheadersspec的引用应参数化为java(16777788)
但是,这种方法对于 post() ,所以我很想知道主要的区别是什么

WebClient.RequestBodySpec requestBodySpec = webClientBuilder.build().post().uri(uri);

注:以下为 block() 是需要的,这是一个同步呼叫

vom3gejh

vom3gejh1#

如果你检查一下 WebClient 你会看到 get() 返回类型为 RequestHeadersUriSpec<?> ,而 post()RequestBodyUriSpec 延伸到 RequestHeadersUriSpec<RequestBodySpec> . 而 post 方法的返回类型是通过继承参数化的 get 方法的不是。因此发出警告。
为避免出现警告,只需为类型声明提供泛型类型:

WebClient.RequestHeadersSpec<?> requestSpec = webClientBuilder.build().get().uri(uri);

相关问题