我有一系列的Java方法,所有的外观,除了不同的类象一样Class1Number,Class2Number,Class3Number等如下实施。有什么方法可以编写一个将类作为参数的方法?
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;
}
Run Code Online (Sandbox Code Playgroud)
你可以做类似的事情
<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;
}
Run Code Online (Sandbox Code Playgroud)
然后像
trimNumberList(criteria, Class1Number::valueOf, Class1Number::isWellFormed);
trimNumberList(criteria, Class2Number::valueOf, Class2Number::isWellFormed);
Run Code Online (Sandbox Code Playgroud)
但是,在for循环中对实例执行任何特殊操作都需要一个通用的基本类型。
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |