首页 > 其他分享 >方法引用_通过this引用本类的成员方法与方法引用_类的构造器(构造方法)引用

方法引用_通过this引用本类的成员方法与方法引用_类的构造器(构造方法)引用

时间:2022-10-12 15:56:46浏览次数:49  
标签:name 本类 Person 引用 方法 public String

方法引用_通过this引用本类的成员方法

通过this引用成员方法

this代表当前对象,如果需要引用的方法就是当前类中的成员方法,那么可以使用"this:成员方法"的格式来使用方法引用。首先是简单的函数式接口∶

package day01.Demo01_Day016.Demo01_JieKou;
/*
    定义一个富有的函数式接口
 */
@FunctionalInterface
public interface Richable {
    //定义一个想买什么就买什么的方法
    void buy();
}

 

package day01.Demo01_Day016.Demo01_JieKou;
    /*
        通过this引用本来的成员方法
     */
public class Husband {
    //定义一个结婚的方法,参数传递Richable接口
    private void marry(Richable lambad){
            lambad.buy();
    }
        //定义一个买房子的方法
    public void beHappy(){
        marry(()->{
            System.out.println("余总买了一个紫禁城");
        });
    }
    //定义一个非常高兴的方法
        public void soHappy(){
        //调用结婚的方法,方法的参数Ricchable是一个函数式接口,传递Lambda表达式
           /*
            marry(()->{
                //使用this,成员方法 ,调用本类买房子的方法
                this.beHappy();
            });
            */
            /*
            使用方法引用优化Lambda表达式
            this是已经存在的
            本类的成员方法buyHouse也是已经存在的
            所以我们可以直接使用this引用本类的成员方法buyHouse
             */
            marry(this::beHappy);
        }

        public static void main(String[] args) {
            new Husband().soHappy();
        }
}

 

方法引用_类的构造器(构造方法)引用

类的构造器引用

由于构造器的名称与类名完全一样,并不固定。所以构造器引用使用类名称::new的格式表示。首先是一个简单的Person类:

package day01.Demo01_Day016.Demo01_JieKou;

public class Person {
    private String name;

    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }
}

 

package day01.Demo01_Day016.Demo01_JieKou;
    /*
        定义一个创建Person对象的函数式接口
     */
@FunctionalInterface
public interface PersonBuilder {
    //定义一个方法,根据传递的姓名,创建Person对象返回
    Person builderPerson(String name);
}

 

package day01.Demo01_Day016.Demo01_JieKou;
    /*
        方法引用–类的构造器(构造方法)引用
     */
public class Demo {
    //定义一个方法,参数传递姓名和PersonBuilder接口,方法中通过姓名创建Person对象
        public static void printName(String name,PersonBuilder pb){
            Person person = pb.builderPerson(name);
            System.out.println(person.getName());
        }

        public static void main(String[] args) {
            //调用printName方法,方法的参数PersonBuilder接口是一个函数式接口,可以传递Lambda
            printName("绛珠仙草",(String name)->{
                return new Person(name);
            });
            /*
            使用方法引用优化Lambda表达式
            构造方法new Person(String name)已知创建对象已知new
            就可以使用Person引用nei创建对象
             */
            printName("凤花仙子",Person::new);//使用Person类的带参构造方法,通过传递的姓名创建对象
        }
}

 

标签:name,本类,Person,引用,方法,public,String
From: https://www.cnblogs.com/x3449/p/16784773.html

相关文章

  • 传统方法怎么玩计算机审美
    编辑:叶琰    说我们今天走到了科学与艺术的交叉口,是完全没问题的。    在深度学习还没有遍地开发,在神经网络还处于低谷时期,有没有人在玩计算机摄影?当然有。    ......
  • [综述类] 一文道尽深度学习中的数据增强方法(上)
    今天带来一次有关于深度学习中的数据增强方法的分享。00什么是数据增强在深度学习项目中,寻找数据花费了相当多的时间。但在很多实际的项目中,我们难以找到充足的数据来完成任......
  • JavaScript字符串转数字的5种方法及其陷阱
    String转换为Number有很多种方式,我可以想到的有5种!parseInt(num);//默认方式(没有基数)parseInt(num,10);//传入基数(十位数)parseFloat(num);//浮点数Number......
  • 【Linux 管理】使用 adduser 添加用户并为用户授予 sudo 权限的最简便方法
    目录添加用户为用户赋予sudo权限删除用户参考资料本文基于Ubuntu22.04,若下面的方法行不通可以转到最下方资料使用useradd。添加用户使用adduser命令来添加用户,只......
  • Mysql主主同步配置方法
    环境服务器a:172.16.0.123服务器b:172.16.0.132Mysql版本:5.6.22SystemOS:CentOSrelease6.3创建同步用户服务器a和b分别建立一个同步用户:mysql>grantreplications......
  • 页面加载完成后自动执行一个方法函数的JQ、JS方法
    一、JS方法1.最简单的调用方式,直接写到html的body标签里面:<bodyοnlοad="myfunction()"><html><bodyοnlοad="func1();func2();func3();"></body></html......
  • MySQL存储IP地址的方法
    IP转数字函数inet_aton()mysql>selectinet_aton('192.168.1.1');+--------------------------+|inet_aton('192.168.1.1')|+--------------------------+|3232......
  • 【GAN的应用】基于对抗学习的图像美学增强方法
    好久不见~甚是想念由于年底了要处理的事情变得特别多,突然间醒悟好久没更新啦于是深夜给大家带来一篇生成对抗网络在图片美学增强上的应用。首先来个小问题,你能猜出下图的(b)(c)......
  • 【Java】线程Thread类常用方法
    1.Thread类中常用方法Thread类常用方法描述start()启动当前线程,调用当前线程的run()方法。run()通常需要重写该方法,将线程要执行的操作写在此方法中。cu......
  • 基于EinScan-S的编码结构光方法空间三维模型重建
    草莓熊三维模型制作本部分以草莓熊玩偶为例,展示利用EinScan-S软件,借助编码结构光方法制作三维模型的具体流程。前期准备工作在本次实验中未涉及EinScan-SE扫描头、转台......