当前位置: 首页 > ops >正文

第十节第九部分:jdk8新特性:方法引用、特定类型的方法引用、构造器引用(不要求代码编写后同步简化代码,后期偶然发现能用这些知识简化即可)

方法引用

方法引用

静态方法引用

静态方法引用

实例方法引用

实例方法引用

特定类型的方法引用

特定方法引用

代码

代码一:静态方法引用+实例方法引用

Test类(里面的Student类见前面Arrays的代码-学生类)

package com.itheima.method_reference;import com.itheima.Arrays.Student;import java.util.Arrays;
import java.util.Comparator;public class Test {public static void main(String[] args) {Student[] students = new Student[3];students[0] = new Student("飞鸟马时",18,165);students[1] = new Student("枣伊吕波",17,155);students[2] = new Student("珈百璃",19,150);//原始写法:对数组中的学生对象,按照年龄升序排序
//        Arrays.sort(students, new Comparator<Student>() {
//            @Override
//            public int compare(Student o1, Student o2) {
//                return o1.getAge() - o2.getAge();//按年龄升序排序
//            }
//        });//使用Lambda简化后的形式//Arrays.sort(students,(o1,o2)->o1.getAge() - o2.getAge());//Arrays.sort(students,(o1, o2) -> CompareByData.compareByAge(o1 ,o2));//静态方法引用//Arrays.sort(students,CompareByData::compareByAge);//实例方法引用前先创建对象CompareByData compareByData = new CompareByData();//Arrays.sort(students,((o1, o2) -> compareByData.compareByAgeDsc(o1,o2)));//实例方法引用Arrays.sort(students,compareByData::compareByAgeDsc);System.out.println(Arrays.toString(students));}
}

结果1

代码二:特定类型的方法引用

package com.itheima.method_reference;import java.util.Arrays;
import java.util.Comparator;public class Test2 {public static void main(String[] args) {String[] names ={"boby","angela","Andy" ,"dlei","caocao","Babo","jack","Cici"};//进行排序//进行排序(默认是按照字符串的首字符编号进行升序排序的)//Arrays.sort(names);//System.out.println(Arrays.toString(names));//要求忽略首字符大小写进行排序。
//        Arrays.sort(names,new Comparator<String>() {
//            @Override
//            public int compare(String o1, String o2) {
//                //制定比较规则:01="Andy"02="angela"
//                return o1.compareToIgnoreCase(o2);
//            }
//        });//上述代码使用Lambda简化//Arrays.sort(names,(String o1, String o2) ->o1.compareToIgnoreCase(o2));//特定类型的方法引用!Arrays.sort(names, String::compareToIgnoreCase);System.out.println(Arrays.toString(names));}
}

结果2

代码三:构造器引用(理解语法即可)

Car类

package com.itheima.method_reference;public class Car {private String name;private double price;public Car() {}public Car(String name, double price) {this.name = name;this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "Car{" +"name='" + name + '\'' +", price=" + price +'}';}
}

Test类(主程序)

package com.itheima.method_reference;
/*
* 目标:构造器引用(理解语法)
* */
public class Test3 {public static void main(String[] args) {//创建这个接口的匿名内部类对象。
//        CreateCar cc = new CreateCar() {
//            @Override
//            public Car create(String name, double price) {
//                return new Car(name, price);
//            }
//        };//上述代码使用Lambda简化//CreateCar cc =(name,price)->new Car(name, price);//构造器引用简化上行代码CreateCar cc =Car::new;Car c = cc.create("奔驰", 49.9);System.out.println(c);}
}
interface CreateCar{Car create(String name,double price);
}

结果3

http://www.xdnf.cn/news/8569.html

相关文章:

  • 鸿蒙UI开发——badge角标的使用
  • 从神经生物学到社会心理学:游戏沉迷机制的深度解构
  • Jest入门
  • 利用 XML 外部实体注入(XXE)读取文件和探测内部网络
  • redis缓存实战-19(使用 Pub/Sub 构建简单的聊天应用程序)
  • C++:整数奇偶排序
  • iOS知识复习
  • 项目中使用到了多个UI组件库,也使用了Tailwindcss,如何确保新开发的组件样式隔离?
  • linux debug技术
  • 设计模式 - 模板方法模式
  • 教育信息化2.0时代下学校网络安全治理:零信任架构的创新实践与应用
  • 《Java vs Go vs C++ vs C:四门编程语言的深度对比》
  • 第十六章:数据治理之数据架构:数据模型和数据流转关系
  • 【R语言科研编程-散点图】
  • C++ STL6大组件
  • mac 安装 mysql 和 mysqlshell
  • (17) 关于工具箱 QToolBox 的一个简单的范例使用,以了解其用法
  • 详解最长公共子序列问题
  • 【每日一题】【前缀和优化】【前/后缀最值】牛客练习赛139 B/C题 大卫的密码 (Hard Version) C++
  • Git研究
  • Anthropic推出Claude Code SDK,强化AI助理与自动化开发整合
  • 微信小程序调试
  • Python实例题:人机对战初体验Python基于Pygame实现四子棋游戏
  • CSS专题之flex: 1常见问题
  • 事务基础概念
  • 抽象类、普通类和接口的区别详细讲解(面试题)
  • Maven 中央仓库操作指南
  • Baklib构建企业CMS高效协作与安全管控体系
  • 开源视频监控前端界面MotionEye
  • Java基础 Day19