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

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

如何使用流重用具有幾乎相同實(shí)現(xiàn)的 Java 方法

如何使用流重用具有幾乎相同實(shí)現(xiàn)的 Java 方法

慕村225694 2022-11-02 10:33:37
我有一系列 Java 方法,除了下面實(shí)現(xiàn)的不同類(lèi)(如Class1Number、Class2Number、Class3Number等)外,它們看起來(lái)都一樣。有沒(méi)有辦法編寫(xiě)一個(gè)將類(lèi)作為參數(shù)的方法?Set<String> trimClass1NumberList(Set<String> criteria){    Set<String> validData = new HashSet<>();    Set<Class1Number> numberList = criteria.stream().map(String::trim).map(Class1Number::valueOf)        .filter(Class1Number::isWellformed).collect(Collectors.toSet());    for (Class1Number num : numberList) {        // Do somehing with validData    }    return validData;}Set<String> trimClass2NumberList(Set<String> criteria){    Set<String> validData = new HashSet<>();    Set<Class2Number> numberList = criteria.stream().map(String::trim).map(Class2Number::valueOf)        .filter(Class2Number::isWellformed).collect(Collectors.toSet());    for (Class2Number num : numberList) {        // Do somehing with validData    }    return validData;}
查看完整描述

3 回答

?
揚(yáng)帆大魚(yú)

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

你可以做類(lèi)似的事情


<T> Set<String> trimNumberList(Set<String> criteria, Function<String, T> valueOf, Predicate<T> isWellFormed){

    Set<String> validData = new HashSet<>();

    Set<T> numberList = criteria.stream().map(String::trim).map(valueOf)

            .filter(isWellFormed).collect(Collectors.toSet());

    for (T num : numberList) {

        // Do somehing with validData

    }

    return validData;

}

然后像這樣稱(chēng)呼它


trimNumberList(criteria, Class1Number::valueOf, Class1Number::isWellFormed);

trimNumberList(criteria, Class2Number::valueOf, Class2Number::isWellFormed);

但是,在 for 循環(huán)中對(duì)您的實(shí)例執(zhí)行任何特殊操作都需要一個(gè)通用的基本類(lèi)型。


查看完整回答
反對(duì) 回復(fù) 2022-11-02
?
慕村9548890

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

您可以為 Class1Number、Class2Number、Class3Number 創(chuàng)建一個(gè)通用抽象超類(lèi)或通用接口,并在您的方法中使用它而不是真正的子類(lèi)。



查看完整回答
反對(duì) 回復(fù) 2022-11-02
?
守著星空守著你

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

您的班級(jí)似乎具有相同的行為。


如果您在它們上使用的方法也相同,我的建議是使用 Java 繼承,如下所述


class Super {

   .....

   .....

}

class Sub extends Super {

   .....

   .....

}

在你的情況下


class Class0Number {


theMethodYouUse(){

.....

};


}


class Class1Number extends Class0Number {


// and maybe for different behaviour inside the for each block you can override the method and use always the same by overriding it


@Override

theMehodYouUse(){

......

};


}


查看完整回答
反對(duì) 回復(fù) 2022-11-02
  • 3 回答
  • 0 關(guān)注
  • 114 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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