public static void main(String[] args){
List<String> languages = Arrays.asList("Java", "Scala", "C++", "Haskell", "Lisp");
filter(languages, (str)->((String)str).length() > 4);
}
static void filter(List<String> names, Predicate condition) {
for(String name: names) {
if(condition.test(name)) {
System.out.println(name + " ");
}
}
}
第 3 行里面的 Lambda 表达式,如果不做强制转换似乎 str 会被认为是个 Object 而不是 String。可是这个强制转换太丑了,有没有优雅的处理方法?
update:
知道问题了, filer 方法里面应该给 Predicate 指定类型,改成这样
static void filter(List<String> names, Predicate<String> condition) {
for(String name: names) {
if(condition.test(name)) {
System.out.println(name + " ");
}
}
}
List<String> languages = Arrays.asList("Java", "Scala", "C++", "Haskell", "Lisp");
filter(languages, (str)->((String)str).length() > 4);
}
static void filter(List<String> names, Predicate condition) {
for(String name: names) {
if(condition.test(name)) {
System.out.println(name + " ");
}
}
}
第 3 行里面的 Lambda 表达式,如果不做强制转换似乎 str 会被认为是个 Object 而不是 String。可是这个强制转换太丑了,有没有优雅的处理方法?
update:
知道问题了, filer 方法里面应该给 Predicate 指定类型,改成这样
static void filter(List<String> names, Predicate<String> condition) {
for(String name: names) {
if(condition.test(name)) {
System.out.println(name + " ");
}
}
}