什么是函数对象?
程序员文章站
2022-04-11 18:53:43
...
一种将函数作为参数传递的独创方法是注意到对象既包含数据也包含方法,于是我们可以定义一个没有数据只有一个方法的类,并传递该类的一个实例。事实上,一个函数通过将其放在一个对象内部而被传递。这样的对象通常叫做函数对象。
public class TestProgram {
public static <T> T findMax(T[] arr, Comparator<? super T> cmp) {
int maxIndex = 0;
for (int i = 1; i<arr.length; i++) {
if (cmp.compare(arr[i], arr[maxIndex]) > 0) {
maxIndex = i;
}
}
return arr[maxIndex];
}
public static void main(String[] args) {
String[] arr = {"zhangSan", "LDAEWEQ", "liquan_pgz"};
//例用一个函数对象作为第2个参数传递给findMax,输出zhangSan
System.out.println(findMax(arr, new CaseInsensitiveCompare()));
}
static class CaseInsensitiveCompare implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
return o1.compareToIgnoreCase(o2);
}
}
}
上一篇: Eureka实现微服务的调用
下一篇: python 界面设计 tkinter