lambda表达式中的方法引用

package SimpleTest;

/**
 * @className: Test05
 * @description: 方法引用
 * @author: CCQ
 * @date: 2021/9/10
 **/

//一些Java已经有的代码实现,我们可以直接进行引用,引用符为::
public class Test05 {
    public static void main(String[] args) {

        use_e(s -> System.out.println(s));

        use_e(System.out::println);

        System.out.println("上述两个的方法的输出是一样的");
    }

    private static void use_e(e e1){
        e1.printe("别流泪心酸,永不应舍弃!");
    }
}

interface e{
    void printe(String s);
}

//第二个例子
class test05_2{
    public static void main(String[] args) {
        use_f(i -> System.out.println(i));

        use_f(System.out::println);
    }
    static void use_f(f f1){
        f1.printfs(100);
    }
}

interface f{
    void printfs(int i);
}

package SimpleTest;

/**
 * @className: Test06
 * @description: 引用类方法
 * @author: CCQ
 * @date: 2021/9/11
 **/
public class Test06 {
    public static void main(String[] args) {
        //lambda表达式
        gimplement((s)->{return Integer.parseInt(s);});

        gimplement(s -> Integer.parseInt(s));

        //引用类方法
        gimplement(Integer::parseInt);

    }
    public static void gimplement(g g1){
        int num = g1.transfom("600");
        System.out.println(num);
    }
}

interface g{
    int transfom(String s);
}


package SimpleTest;

/**
 * @className: Test07
 * @description: 引用 对象的实例方法
 * @author: CCQ
 * @date: 2021/9/11
 **/
public class Test07 {
    public static void main(String[] args) {
        //普通lambda
        himplement(s -> System.out.println(s.toUpperCase()));
        //引用类方法(输出不了,因为虽然引用了String的方法,但是没有输出语句)
        himplement(String::toUpperCase);
        //引用对象的实例方法
        printstr p1 = new printstr();
        himplement(p1::printupps);
    }

    public static void himplement(h h1){
        h1.printupp("spirit is important");
    }
}

class printstr{
    void printupps(String s){
        System.out.println(s.toUpperCase());
    }
}

interface h{
    void printupp(String s);
}

package SimpleTest;

/**
 * @className: Test08
 * @author: CCQ 引用 类的实例方法
 * @date: 2021/9/11
 **/
public class Test08 {
    public static void main(String[] args) {
        use_i((s,x,y)->s.substring(x,y));


        //lambda表达式被类的实例方法替代的时候
        //第一个参数作为调用者
        //后面的参数全部传递给该方法作为参数
        use_i(String::substring);

    }

     private static void use_i(i i1){
         String a = i1.substr("你好呀,Java!", 4, 9);
         System.out.println(a);
    }
}

interface i{
    String substr(String s,int x,int y);
}


package SimpleTest;

/**
 * @className: Test09
 * @description: 引用构造器
 * @author: CCQ
 * @date: 2021/9/11
 **/
public class Test09 {
    public static void main(String[] args) {
        use_j((name, age) -> new stu(name,age));
        use_j((name, age) -> new stu());

        //lambda表达式被构造器替代的时候,它的形式参数全部传递给构造器作为参数
        use_j(stu::new);
    }

    static void use_j(j j1){
        stu s1 = j1.build("棋棋", 21);
        System.out.println(s1.getName()+"  "+s1.getAge());
    }
}

interface j{
    stu build(String name,int age);
}

class stu{
    String name;
    int age;

    public stu() {
    }

    public stu(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值