文章目录
- 前言
- 一、方法引用
- 方法引用实例
- 引用静态方法
- 引用成员方法
- 引用构造方法
- 使用类名引用成员方法
- 引用数组的构造方法
- 综合练习
- 二、异常
- 异常是什么
- 异常的作用
- 处理方案
- 默认异常
- 捕获异常
- 异常对象的常用方法
- 抛出异常
- 总结
前言
博客仅记录个人学习进度和一些查缺补漏。
学习内容:BV17F411T7Ao
一、方法引用
方法引用实例
把已经有的方法拿过来用,当作函数式接口中抽象方法的方法体
可以引用的情况:

引用方式:

需要注意,引用的情况下应该能满足当前需求
其实就是类名点用方法名。其中::就是方法引用符,并且无需再额外写参数。

引用静态方法
类名::静态方法名
Integer::parseInt

使用stream流简化操作,map做类型转换:

想使用方法引用,需要确定是不是一个抽象方法,并且所引用的方法是否存在。很明显,Integer类已经提供了这个方法。

化简后:

引用成员方法

使用场景:过滤集合数据时

其中s表示集合中的每一个元素,返回值表示是否留下。

java中没有原生提供相应的过滤方法,所以自己写一个类提供该方法

方法引用:

如果是本类中的方法引用,需要注意静态方法是没有this的,引用的时候还是得new一个对象

一般情况下引用本类方法:
自己写在本类的非静态方法

方法引用

如果在父类中的方法引用

引用构造方法
本质是为了创建对象

可以使用方法引用的情况:

预置的两个构造方法都不满足传入参数类型,需要写一个传入参数为String的构造方法

注意,构造方法没有返回值,仅需保证调用了构造方法后会产生指定的对象。

使用类名引用成员方法


方法引用:

需要注意的是,toUpperCase方法没有传入参数。形参没有对应,但是仍然可以引用



引用数组的构造方法

数组底层也有自己的构造方法,例如下列方法是将集合中的元素抽取出来放到数组中
注意,toArray是终结方法

方法引用:

综合练习

ArrayList<String> arrayList = new ArrayList<>();
Collections.addAll(arrayList, "张三,23", "李四,24","王五,25");
Student[] array = arrayList.stream().map(Student::new).toArray(Student[]::new);
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
Collections.addAll(arrayList, "张三,23", "李四,24","王五,25");
List<Student> collect = arrayList.stream().map(Student::new).toList();
ArrayList<Student> arrayList1 = new ArrayList<>(collect);
String[] array = arrayList1.stream().map(StreamTest::StudentToString).toArray(String[]::new);
for (String s : array) {
System.out.println(s);
}
}
public static String StudentToString(Student student) {
return student.getName();
}
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
Collections.addAll(arrayList, "张三,23", "李四,24","王五,25");
List<Student> collect = arrayList.stream().map(Student::new).toList();
ArrayList<Student> arrayList1 = new ArrayList<>(collect);
String[] array = arrayList1.stream().map(StreamTest::StudentToString).toArray(String[]::new);
for (String s : array) {
System.out.println(s);
}
}
public static String StudentToString(Student student) {
return student.getName() + "-" + student.getAge();
}
二、异常
异常是什么
本质是提示如何处理出现的异常




异常的作用
用来查询bug的关键参考信息,也可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况
例如数组越界:

一般情况下:

人为返回异常:

例如:手动抛出

处理方案
默认异常

默认情况下,会停在出现异常的位置,并且在控制台打印
捕获异常

主要是为了让代码继续执行,为了可以继续执行就需要自行处理错误
例如:


1、如果try中没有遇到问题,那么不会执行catch内的代码。
2、如果try中遇到了多个问题,可以使用多个catch来捕获对应的异常,其中,父类异常如果写在前面会被优先相应。
3、如果try中产生的异常没有被捕获,就会直接抛出异常到控制台,后续的代码也不会被执行。
4、如果try中产生了异常并且被捕获了,try中剩余的代码不会执行,并直接跳转到catch。
异常对象的常用方法
对捕获的异常对象e,一些常用方法帮助我们了解异常的类型

其中,虽然printStackTrac方法是红色字体在控制台上,但是它仅仅是打印信息,不会停止代码的运行

抛出异常

例如:手动抛出异常

例如:提示可能会出现的异常

总结

异常的处理是项目中经常使用到的语法,因为不知道前端回传过来什么样的数据,不同的数据需进行不同的相应,例如之前写的学生管理系统,在输入指定以外的键位时需要给出对应的回应,或者在输入年龄时输入了String类型应该如何处理,都是异常处理需要考虑的问题



















