函数对象

来源:互联网 发布:淘宝闲鱼拍卖靠谱吗 编辑:程序博客网 时间:2024/06/09 21:01

定义

一种将函数作为参数传递的独创方法是注意到对象既包含数据也包含方法,于是我们可以定义一个没有数据而只有一个方法的类,并传递该类的一个实例。事实上,一个函数通过将其放在一个对象内部而被传递,这样的对象通常叫做传递对象。给人的感觉有点像函数式接口,只是后者可以有常量定义。貌似与C语言的函数指针差不多。

示例代码

package burnigT;import java.util.Comparator;class CaseInsensetiveCompare implements Comparator<String>//这里注意泛型{    @Override    public int compare(String o1, String o2) {        return o1.compareToIgnoreCase(o2);    }}public class FunctionObject {    public static <AnyType> AnyType FindMax(AnyType[] arr,Comparator<? super AnyType> 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[] str = {"Hello world","Hi","HIGH"};        System.out.println(FindMax(str,new CaseInsensetiveCompare()));    }}

运行结果:
HIGH

原创粉丝点击