匿名内部类概念
内部类是为了应对更为复杂的类间关系。查看源代码中会涉及到,而在日常业务中很难遇到,这里不做赘述。
最常用到的内部类就是匿名内部类,它是局部内部类的一种。
定义的匿名内部类有两个含义:
- 临时定义某一指定类型的子类
- 定义后即刻创建刚刚定义的这个子类的对象
匿名内部类的作用与格式
作用:匿名内部类是创建某个类型子类对象的快捷方式。
传统实现接口是要进行实例化的,匿名内部类则不需要,直接在内部类中重写方法
格式:
new 父类或接口(){
//进行方法重写
};
Lambda表达式
使用Lambda表达式的前提是:
必须是函数式接口,所谓函数式接口:只有一个抽象方法的接口
public class LambdaDemo {
public static void main(String[] args) {
LambdaDemo.test(str -> System.out.println(str));
LambdaDemo.test((str) -> System.out.println(str));
LambdaDemo.test((str) -> {
System.out.println(str);
});
LambdaDemo.test2(() -> System.out.println("111111111"));
// 匿名内部类
LambdaDemo.test(new A() {
@Override
public void add(String a) {
System.out.println(a);
}
});
//Lambda表达式
LambdaDemo.test((a)->System.out.println(a));
}
public static void test(A a) {
String str = "1111";
a.add(str);
}
public static void test2(B b) {
b.add();
}
}
/**
* A是一个函数式接口
*
* @author Administrator
*
*/
interface A {
// 抽象方法计算两个数的和
public abstract void add(String a);
}
interface B {
// 抽象方法计算两个数的和
public abstract void add();
}