Java8之Function函数

Java8之Function函数


在一次项目中用到了Java的Function函数来使代码看起不是那么的臃肿,暂时只了解了一个皮毛,自己写了一个例子在深入一下,有问题的地方还希望大家指正。
首先我先抽出来一个公共的类,叫People,它里边有一个执行的方法mainWork

	public  class  People {

    private String work;
    private String sex;

    public String getWork() {
        return work;
    }

    public void setWork(String work) {
        this.work = work;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String mainWork(People people){
        String s = "";
        if ("0".equals(people.getSex())) {
            //男人
            System.out.println("===People输出====男人负责"+people.getWork());//这里当做日志输出
            s= "男人负责"+work;
        }
        if ("1".equals(people.getSex())) {
            //女人
            System.out.println("===People输出====女人负责"+people.getWork());//这里当做日志输出
            s = "女人负责"+work;
        }
        return s;
    }
    }

我然后写了一个抽象的类,里边只有一个方法execute,用于统一处理我下边需要调用people类的操作,在其中我在里边定义了两个个String类型的的参数,另外还有一个Function函数,函数里的参数为我的People类以及返回String字符串

import java.util.function.Function;

public abstract class AbstrPeopWork {
    People people = new People();
    public void execute(String  work,String sex, Function<People,String> function){
        people.setWork(work);
        people.setSex(sex);
        String s = function.apply(people);
        //执行请求玩的参数可用于处理其他业务
        System.out.println("==AbstrPeopWork的execute的输出=="+s);

    }
}

然后我又定义了两个类,一个是男人,一个是女人,在他们这里的方法里边本来是需要分别调用Peopled的mainWork方法的,而且还需要在这个方法李输入很多行代码去处理该有的逻辑,但是我使用他们继承我的这个抽象类,调用抽象类里边execute,这样我们后期再加比如说是小孩的类我们就很好写了,我们不需要动用太多代码就可以实现小孩操作。

public class Man extends AbstrPeopWork {
    public void man(){
        execute("赚钱养家",
                "0",
                people -> people.mainWork(people));
    }
}

   //在这里我使用了两种方式去使用我抽象类里边的这个
   //方法里边的Function的调用,方便大家能对比看一下

import java.util.function.Function;

public class Woman extends AbstrPeopWork{
    public void woman(){
        execute("貌美如花", "1", new Function<People, String>() {
            @Override
            public String apply(People people) {
                return people.mainWork(people);
            }
        });
    }

}
其中
 people -> people.mainWork(people)
 和
 new Function<People, String>() {
            @Override
            public String apply(People people) {
                return people.mainWork(people);
            }
 实际上是一样的效果

运行结果:

===People输出====男人负责赚钱养家
==AbstrPeopWork的execute的输出==男人负责赚钱养家
===People输出====女人负责貌美如花
==AbstrPeopWork的execute的输出==女人负责貌美如花

能力有限,只能写到这里了,欢迎大家前来指点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值