一,匿名内部类:基于接口或者抽象类的应用,其目的是减少类的定义,当某个类只使用一次时,可以考虑定义内部类。
package 接口;
interface A
{
void printA();
}
public class InterfaceDemo {
public static void main(String[] args){
fun(new A(){
public void printA()
{
System.out.println("匿名内部类");
}
});
}
public static void fun(A a)
{
a.printA();
}
}
二,Lamda表达式:函数式编程,解决匿名内部类代码繁琐的问题。
- 表达形式1:(参数)->单行语句;
package 接口;
interface A
{
void print(String s);
}
public class InterfaceDemo {
public static void main(String[] args){
fun((s)->System.out.println(s));
}
public static void fun(A a)
{
a.print("hello world");
}
}
- 表达形式2:(参数)->{多行语句};
package 接口;
interface A
{
void print(String s);
}
public class InterfaceDemo {
public static void main(String[] args){
fun((s)-> {
s=s.toUpperCase();
System.out.println(s);
}
);
}
public static void fun(A a)
{
a.print("hello world");
}
}
- 表达形式3:(参数)->表达式;
package 接口;
interface A
{
int add(int x,int y);
}
public class InterfaceDemo {
public static void main(String[] args){
fun((a,b)->a+b);
}
public static void fun(A a)
{
System.out.println(a.add(10,20));
}
}