如果有一个接口A,A里有eat()抽象方法,想要调用这个抽象方法,用传统模式就要写一个实现类B并重写eat()方法,再创建B对象调用这个方法
如果用内部类可以简化代码量
先定义两个接口和一个方法
//接口A
interface A{
public void eat();
}
//接口B
interface B{
public void eat1();
public void eat2();
}
//定义方法f
public void f(A a){
a.eat();
}
用内部类调用接口A的方法
new A(){ @Override public void eat(){ System.out.print("eat方法正在执行") } }.eat()
相当于创建了实现对象并调用了方法
当接口中有多个方法需要调用怎么办?
B b = newB(){ @Override public void eat1(){xxxx} @Override public void eat2(){xxxx} }; b.eat1(); b.eat2();
以上只是为了说明什么是内部类,并不是常用的场景,用的最多的情况是把内部类当作实参,当一个方法需要抽象类或接口的对象做实参时,可以不用创建实现类并
重写抽象方法再new对象的方式传参,用内部类一步到位,可以把内部类看作是接口的实现对象,比如调用方法f
f( new A(){ @Override public void eat(){ System.out.print("内部类常用场景") } } )
lambda表达式:
标签:内部,void,接口,public,方法,eat,表达式,lambda From: https://www.cnblogs.com/1--2/p/16858570.html