文章目录
- 前言
- 一、方法引用
- 方法引用实例
- 引用静态方法
- 引用成员方法
- 引用构造方法
- 使用类名引用成员方法
- 引用数组的构造方法
- 综合练习
- 二、异常
- 异常是什么
- 异常的作用
- 处理方案
- 默认异常
- 捕获异常
- 异常对象的常用方法
- 抛出异常
- 总结
前言
博客仅记录个人学习进度和一些查缺补漏。
学习内容: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类型应该如何处理,都是异常处理需要考虑的问题