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

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

如何實(shí)現(xiàn)基于用戶選擇返回類型的Java函數(shù)?

如何實(shí)現(xiàn)基于用戶選擇返回類型的Java函數(shù)?

ITMISS 2022-11-02 15:34:36
我正在嘗試實(shí)現(xiàn)這個(gè)接受數(shù)據(jù)庫行和列名的方法,它返回該單元格中的值。用戶期望的類型由他們通過Class<T> type.// This return T, the value under the columnName in the row.public <T> T getColumnByName(Row row, String columnName, Class<T> type)而且我可以訪問這個(gè)名為的對象Row,它方便地為我提供了以下方法:row.getString(String columnName) // Gets String stored under columnrow.getLong(String columnName) // Gets the Long stored under columnetc...所以這是非常基本的,但我對泛型有點(diǎn)卡住了。我試圖以getColumnByName這種方式實(shí)現(xiàn):private <T> T getColumnByName(Row row, String name, Class<T> type) {  if (type == Long.class) {    return row.getLong(name);  } else if (type == String.class) {    return row.getString(name);  } ... continued...}但是,我收到錯(cuò)誤“不兼容的類型,必需:T,找到:long”。我不確定如何處理將Row方法返回的具體類型轉(zhuǎn)換為編譯器將接受的泛型類型。關(guān)于如何做到這一點(diǎn)的任何想法?
查看完整描述

1 回答

?
慕斯709654

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

您可以使用Class<T>傳入的用戶來說服編譯器您的代碼的正確性,盡管它確實(shí)增加了額外運(yùn)行時(shí)轉(zhuǎn)換的開銷:


private <T> T getColumnByName(Row row, String name, Class<T> type) {

  if (type == Long.class) {

    return type.cast(row.getLong(name));

  } else if (type == String.class) {

    return type.cast(row.getString(name));

  } ... continued...

}


查看完整回答
反對 回復(fù) 2022-11-02
  • 1 回答
  • 0 關(guān)注
  • 146 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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