常用API
##JDK8之后的 Lambda类
用来简化匿名内部类的代码写法
匿名内部类:在Java编程语言中,匿名内部类是一种特殊的内部类,它没有类名,通常用于实现接口或继承一个类。匿名内部类可以让我们在创建对象的同时实现接口或继承类,而不需要单独定义一个类。这在某些情况下可以简化代码,提高开发效率。
##注:lambda类只能实现函数式接口 即 1.是一个接口 2.只有一个抽象方法
package com.of.day11_Lambda;
public class Test {
public static void main(String[] args) {
//第一种匿名内部类写法
// Animal sample = new Animal(){
// @Override
// public void run() {
// System.out.println("这是重写的匿名内部类");
// }
// };
//第二种匿名内部类写法 lambel表达式
//只能简化函数式接口的匿名内部类
//函数式接口定义:1首先是接口 2其次有且有一个抽象方法
Swiming sample = () -> {
System.out.println("这是重写的匿名内部类接口");
};
sample.run();
}
}
abstract class Animal{
public abstract void run();
}
interface Swiming{
void run();
}
##更简洁的表示方法
方法引用
静态方法的引用
package com.of.day11_Lambda;
import java.util.Arrays;
import java.util.Comparator;
public class Test2 {
public static void main(String[] args) {
Student[] list = new Student[4];
list[0] = new Student("aaa",16);
list[1] = new Student("bbb",17);
list[2] = new Student("ccc",15);
list[3] = new Student("eee",21);
// 简化前
// Arrays.sort(list, new Comparator<Student>() {
// @Override
// public int compare(Student student, Student t1) {
// return (student.getAge()-t1.getAge());
// }
// });
// //使用lambda简化后的
// Arrays.sort(list, (student,t1)-> student.getAge()-t1.getAge());
//
//
// }
//
// //使用静态方法
// Arrays.sort(list, (student,t1)-> CompareByDate.CompareByAge(student,t1));
//使用静态方法引用
Arrays.sort(list, CompareByDate::CompareByAge);
for (int i = 0; i < list.length; i++) {
System.out.println("这是第" + (i + 1) + "个学生,其姓名和年龄分别为" + list[i].getName()+" "+list[i].getAge());
}
}
}
实例方法引用
//实例方法的使用
CompareByDate cbd = new CompareByDate();
// Arrays.sort(list, (O1,O2)->cbd.CompareByAgeDesc(O1,O2));
//实例方法引用
Arrays.sort(list, cbd::CompareByAgeDesc);
特定类型的方法引用
前面参数列表中的第一个参数是方法的主调
// // 特殊类型下的方法引用
// Arrays.sort(names,(s,t1)->s.compareToIgnoreCase(t1));
// 特殊类型下的方法引用
Arrays.sort(names,String::compareToIgnoreCase);
构造器引用