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

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

时间:2022-09-22 15:02:35浏览次数:47  
标签:name 构造方法 本类 Person 引用 方法 public String

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

Richable接口
@FunctionalInterface
public interface Richable {
    //定义一个想买什么就买什么的方法
    void buy();


}

 


Husband类
/*
通过this引用本类的成员方法
 */
public class Husband {
    //定义一个买房子的方法
    public void buyHouse(){
        System.out.println("火星养奥特曼");
    }
    //定义一个结婚的方法,参数传递Richable接口
    public void marry(Richable r){
        r.buy();
    }
    //定义一个非常高兴的方法
    public void soHappy() {
        //调用结婚的方法,方法的参数Richable是一个函数式接口,传递Lambda表达式
        marry(()->{
            //使用this.成员方法,调用本类买房子的方法
            this.buyHouse();
        });
        /*
            使用方法引用优化Lambda表达式
            this是已经存在的
            本类的成员方法buyHouse也是已经存在的
            所以我们可以直接使用this引用本类的成员方法buyHouse
         */
        marry(this::buyHouse);
    }

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

 

方法引用-类的构造器(构造方法)引用
Person类
public class Person {
    private String name;

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

    public Person() {
    }

    public String getName() {
        return name;
    }

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

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

 


PersonbBuiwlder接口
/*
定义一个创建Person对象的函数式接口
 */
@FunctionalInterface
public interface PersonbBuiwlder {
    //定义一个方法,根据传递的姓名,创建Person对象返回
    Person  p  (String name);


}

 


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

    public static void main(String[] args) {
        //调用printName方法,方法的参数PersonBuilder接口是一个函数式接口,可以传递Lambda
        printName("derder",(String name)->{
            return new Person(name);
        });
        /*使用方法引用优化Lambda表达式
        构造方法new Persib(String name)已知
        创建对象已知 new
        即可以只用Persib引用的new创建对象
         */
        printName("derderder",Person:: new);

    }

 

 
 
 
 
 

标签:name,构造方法,本类,Person,引用,方法,public,String
From: https://www.cnblogs.com/yuzong/p/16719288.html

相关文章

  • 关系运算符重载,以及在关系运算符重载发现的函数参数什么时候需要用引用
    在学习关系运算符重载的时候,看见重载函数中的函数参数使用的是引用类型,于是在思考为什么需要用引用,而不是非引用,例如:引用格式:booloperator==(Person&p)非引用格式:bool......
  • 方法引用基本介绍和方法引用-通过对象名引用成员方法
    方法引用基本介绍在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿什么参数做什么操作,那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地......
  • UEC++ 资源加载(一)直接属性引用
    1、编辑器直接加载:通过使用属性宏标记UPROPERTY(Edit三个都可以3)来将资产对象指针暴露到编辑器面板,从而直接从编辑器面板拾取资产。注意:UClass类指针,专门用来拾取类模版......
  • C++ 左值引用与一级指针
    将左值引用用于一级指针时,有以下几种用法://方式一:引用一级指针,常规用法inta=5;int*pa=&a;int*&rpa=pa;//方式二:引用指向常量的一级指针,以下几种为等效表......
  • 垃圾回收算法(1)-引用计数法
    算法原理引用记数法在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活的对象,哪些是已经死亡的对象,只有被标记为已经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的......
  • JAVA接口组成更新与方法引用
    JAVA接口组成更新与方法引用接口组成接口组成更新概述接口的组成常量publicstaticfinal(可以省略)抽象方法publicabstract(可以省略)默认方法(java8......
  • .Net 简繁字体互转(无需引用第三方包)
    ///<summary>///简体转换为繁体///</summary>///<paramname="str">简体字</param>///<returns>繁体字</returns>publicsta......
  • 引用
    1、了解引用python中一切的传递都是引用(地址),无论是赋值还是函数调用,不存在值传递。通俗理解变量使用了某个内存地址称为引用该数据的内存地址提示:变量最终......
  • Jmeter远程服务模式运行时引用csv文件的路径配置
    问题在使用jmeter过程中,本机的内存等配置不足,启动较多的线程时,可以采用分布式运行。在分布式运行的时候,jmeter会自动将脚本从master主机发送到remote主机上,所以不需要考......
  • System.Data.Linq 无法引用的问题
    参考文章 https://www.bbsmax.com/A/1O5EM0G457/已经在工程中引用了system.data.linq,但是在代码中,输入 usingSystem.Data.Linq 就报告不存在这个命名空间.修改一......