3 回答

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)型。

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以為 Class1Number、Class2Number、Class3Number 創(chuàng)建一個(gè)通用抽象超類(lèi)或通用接口,并在您的方法中使用它而不是真正的子類(lèi)。

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(){
......
};
}
添加回答
舉報(bào)