首页 > 编程语言 >JAVA lambda表达式方法引用+构造器引用

JAVA lambda表达式方法引用+构造器引用

时间:2024-06-10 09:59:19浏览次数:27  
标签:JAVA System employee 实例 引用 println new out lambda

若Lambda体中的内容有方法已经实现了,使用“方法引用”

注意:Lambda体中调用方法的参数列表与返回值类型,要与函数式接口中抽象方法的函数列表和返回值类型保持一致。

静态方法与实例方法的区别

1、静态方法属于整个类所有,因此调用它不需要实例化,可以直接调用(类.静态方法())。实例方法必须先实例化,创建一个对象,才能进行调用(对象.实例方法())。
2、静态方法只能访问静态成员,不能访问实例成员;而实例方法可以访问静态成员和实例成员。
3、在程序运行期间,静态方法是一直存放在内存中,因此调用速度快,但是却占用内存。实例方法是使用完成后由回收机制自动进行回收,下次再使用必须再实例化。
4、一般来说,公共的函数、经常调用的可以写成静态方法,比如数据连接等(SqlHelper)

原文链接:https://blog.csdn.net/g6485644/article/details/85157913

对象::实例方法名

    public static void test01(){
        PrintStream ps1 = System.out;
        Consumer<String> str = (x)->ps1.println(x);
        PrintStream ps2 = System.out;
        Consumer<String> str1 = ps2::println;
        Consumer<String> str2 = System.out::println;
        str.accept("abcdefg");
        str1.accept("abcdefg");
        str2.accept("abcdefg");
    }
    public static void test02(){
        employee emp1 = new employee("zzz",23,20000);
        Supplier<String> sp = ()->emp1.getName();
        String s = sp.get();
        System.out.println(s);

        Supplier<Integer> sp1 = emp1::getAge;
        System.out.println(sp1.get());
    }

类::静态方法名

        Comparator<Integer> com = (x,y)->Integer.compare(x,y);
        Comparator<Integer> com1 = Integer::compare;

类::实例方法名

   BiPredicate<String, String> bp0 = new BiPredicate<>() {
            @Override
            public boolean test(String s, String s2) {
                return s.equals(s2);
            }
        };
        BiPredicate<String,String> bp1 = (x,y)->x.equals(y);
        BiPredicate<String,String> bp2 = String::equals;

注意:若Lambda参数列表中的第一个参数是实例方法的调用者,而第二个参数是实例方法的参数时,可以使用 类名::方法名

================================

构造器引用

格式:类名::new
注意:需要调用的构造器的参数列表要与函数式接口中抽象方法的参数列表保持一致

        Supplier<employee> sup = ()->new employee();
		//匹配无参构造
        Supplier<employee> sup1 = employee::new;
        employee emp = sup1.get();
        System.out.println(emp);
    //employee类中有一个参数的构造函数
    //public employee(int id){
        //this.id = id;
    //}
    public static void test06(){
        Function<Integer, employee> f0 = new Function<>() {
            @Override
            public employee apply(Integer integer) {
                employee emp = new employee(integer);
                return emp;
            }
        };
        System.out.println(f0.apply(1));
        Function<Integer,employee> f1 = x->new employee(x);
        System.out.println(f1.apply(2));
        Function<Integer,employee> f2 = employee::new;
        System.out.println(f2.apply(3));
    }

================================

数组引用

格式:类型::new

    public static void test07(){
        Function<Integer, String[]> f1 = new Function<>() {
            @Override
            public String[] apply(Integer integer) {
                return new String[integer];
            }
        };
        System.out.println(f1.apply(10).length);
        Function<Integer,String[]> f2 = x->new String[x];
        System.out.println(f2.apply(9).length);
        Function<Integer,String[]> f3 = String[]::new;
        System.out.println(f3.apply(8).length);
    }

标签:JAVA,System,employee,实例,引用,println,new,out,lambda
From: https://blog.csdn.net/qq_52260669/article/details/139566001

相关文章

  • Java开发知识汇总
    1.目的:记录积累java开发知识,下次使用不用在发时间查找,好记性不如烂笔头。整理记录于2024.06.0923:25周日@程序员猴哥Java开发知识汇总.目录:==========01Java后端开发==========1.IDEA相关1IDEA安装2JDK的安装3Maven安装配置4Git的安装5IDEA全局......
  • 让你的网页动起来:Javascript+CSS拖曳盒子指南
    让网页上的元素具有拖拽功能,可以提升用户体验,尤其是在需要用户交互的场景中。下面是一个使用JavaScript和CSS来实现拖拽效果的基本指南。1.HTML结构首先,你需要在HTML中定义一个可拖拽的元素,通常是一个div。 <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"......
  • Java 18风暴来袭:解锁编程新纪元
    一、引言Java18的发布标志着Java语言在性能、安全性和开发效率方面的又一次飞跃。本次更新不仅带来了新的语言特性,还包括了一些实验性功能和工具的改进。这些新特性旨在帮助开发者编写更高效、更安全的代码,并提升开发体验。二、新特性概述1.默认使用UTF-8字符编码(JEP400)......
  • java基础
    java题目练习day01Java提供的四种访问控制符Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。default:在同一个包里面可见,不适用任何修饰符。使用对象:类、接口、变量、方法。private:在同一类中可见。使用对象:变量、方......
  • 【JavaScript】了解 Sass:现代 CSS 的强大预处理器
    我已经从你的全世界路过像一颗流星划过命运的天空很多话忍住了不能说出口珍藏在我的心中只留下一些回忆                     ......
  • 【华为OD】D卷真题100分:数组拼接 JavaScript代码实现[思路+代码]
    【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客JS、Java、C、C++、python代码实现:【华为OD】D卷真题100分:数组拼接JavaScript代码实现[思路+代码]-CSDN......
  • Javaweb01-HTTP协议
    HTTP协议1.HTTP协议概述定义与作用HTTP是超文本传输协议,用于定义服务端和客户端之间交换数据的过程和数据本身的的格式,同时HTTP是一种请求/响应式的协议,是一种应用层的协议优点支持客户端和服务器模式简单快速,通过Http请求和Http响应加快通信允许传输任意类型的数据,......
  • [AIGC] 字典树Trie树详解及其Java实现
    字典树,也称为Trie树或前缀树,是一种常见的搜索数据结构,广泛应用于字符串查询的场景中,比如网络词典的实现,或者是搜索引擎中词语的自动补全。文章目录Trie树的概念Trie树特性Trie树的操作插入操作查询操作Java实现Trie树Trie树的概念Trie树是一种特别的n叉树模型......
  • JS(JavaScript)学习总结
    概念:JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语   言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范......
  • java for循环打印三角形
    通过嵌套for循环实现控制台打印一个三角形,外层的循环来规定这个三角形是多少行,内部循环来行成三角形//比如我规定输出六行的三角形,循环次数是设置为6次for(inti=1;i<=6;i++){//首先要我们要输出一个倒着的直角三角形,这个倒着的直角三角形是我们打印这个三......