欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

什么是函数对象?

程序员文章站 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);
        }
    }

}

 

相关标签: Java