【发布时间】:2017-04-18 15:18:04
【问题描述】:
我正在写一个简单的 Predicate 函数如下:
public static Predicate<String> stringPredicate(String op, String compVal) {
if (op.equals("=")){
return p -> p.compareTo(compVal) == 0;
}
else if (op.equals("<")){
return p -> p.compareTo(compVal) == -1;
}
else if (op.equals("<=")){
return p -> p.compareTo(compVal) == 0 || p.compareTo(compVal) == -1;
}
else if (op.equals(">")){
return p -> p.compareTo(compVal) == 1;
}
else if (op.equals(">=")){
return p -> p.compareTo(compVal) == 1 || p.compareTo(compVal) == 0;
}
return p -> -1 == 0; //return false
}
我希望这个函数同时适用于整数、浮点数和字符串。因此,与其编写 2 个相同的谓词函数,一个用于字符串,一个用于 Integer+Float,我想编写一个,因为 compareTo() 方法适用于所有 3 个。我想我可以通过更换来做到这一点
Predicate<String> 和 Predicate<Super class of Integer/Float/String>。我试过Object,但没用。那么,我应该放什么而不是<String> 才能以我想要的方式使用该功能?
【问题讨论】:
-
我不明白你的意思?我有 if-else,如果有,对吗?我错过了什么吗?
-
@SpiderRico
equals与==. -
啊,我明白了,是的。但这在正确性方面不会有太大变化,对吧?
-
@SpiderRico 是的,它会:stackoverflow.com/questions/513832/…
-
@SpiderRico 取决于您所指的“正确性”。
标签: java apache-spark lambda