第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Java 8 和 Java 11 時如何修復(fù)

使用 Java 8 和 Java 11 時如何修復(fù)

白豬掌柜的 2023-07-19 15:04:00
我正在使用使用 Java 11 構(gòu)建的微服務(wù),該服務(wù)具有在 Java 8 中構(gòu)建的依賴項。依賴項中有休息客戶端,并且有一個方法可以執(zhí)行此操作:    public <T> ResponseEntity<my.company.Wrapper<T>> getForList(String url, HttpHeaders headers) {        try {            return template.exchange(url, GET, new HttpEntity<>(headers), new ParameterizedTypeReference<Wrapper<T>>() { });        } catch (RestClientException restEx) {            logger.error("RestClientException!, restEx: {}", restEx);            throw restEx;        }    }休息通話剛剛成功, response -> <200,Wrapper [ elements = [{id=dbfc2557-1738-45e4-8ecd-235d35158957, .....然后,在微服務(wù)(使用 Java 11)中,有一個點需要使用 java Stream:        var found = enttsResponse.stream()                .map(MyCompanyResponse::getId)                .collect( toList() );異常消息是:java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class com.mycompany.commons.v2.entitlement.MyCompanyResponse (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; com.mycompany.commons.v2.entitlement.MyCompanyResponse is in unnamed module of loader 'app')我熟悉Java8,但不熟悉Java 11,我認(rèn)為與類加載器有關(guān)(來自Java 9)解決方法已接受,提前致謝!
查看完整描述

1 回答

?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗 獲得超5個贊

您有一個 形式的類型標(biāo)記new ParameterizedTypeReference<Wrapper<T>>() { },引用類型變量。由于類型擦除(這種類型標(biāo)記首先存在的原因),這不起作用。

接收類型令牌的框架只會知道它必須生成一個Wrapper,但仍然不知道是什么T。所以它不知道要生成什么并且會回退到集合(即LinkedHashMap)。

您必須用引用已知可具體化類型的表達(dá)式替換泛型方法的調(diào)用,即

template.exchange(uriBuilder.toUriString(),?GET,?new?HttpEntity<>(headers),
????new?ParameterizedTypeReference<Wrapper<EntitlementResponse>>()?{?})


查看完整回答
反對 回復(fù) 2023-07-19
  • 1 回答
  • 0 關(guān)注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號