匿名内部类与Lambda表达式习题
1.写一个函数式接口
public Operation{
public int calc(int a,int b);
}
在测试类中写一个method方法,参数为Operation和a,b
public static void method(Operation op)
int result = op.calc(a,b);
System.out.println(result);
}
在测试类中写一个main方法,完成下面的需求
1)调用method方法,传递Lambda表达式,求整数3和4求的和
2)调用method方法,传递Lambda表达式,求整数3和4求的最大值
3)调用method方法,传递Lambda表达式,求整数3和4求的最小值
public class Demo2 {public static void main(String[] args) {int a = 10, b = 20;//Lambda表达式//调用method方法,传递Lambda表达式,求整数3和4求的和method((int a1, int b1) -> {return a + b;}, a, b);//调用method方法,传递Lambda表达式,求整数3和4求的最大值method((a1, b1) -> Math.max(a1, b1), a, b);//调用method方法,传递Lambda表达式,求整数3和4求的最小值method(Math::min, a, b);//直接使用Math类调用min静态方法}public static void method(Operation operation, int a, int b) {int result = operation.calc(a, b);System.out.println(result);}
}@FunctionalInterface
interface Operation {int calc(int a, int b);
}打印结果
------------------------------------------------------------------
30
20
10
2写一个Usb接口,要求有通电、加载驱动程序、运行三个方法
定义一个UseMouse鼠标类,实现Usb接口,复写三个方法
定义一个UsbKeyBoard键盘类,实现Usb接口,复写三个方法
写一个Computer电脑类,定义一个useUsb的方法,要求既能接收鼠标也能接收加键盘
把Usb作为方法的参数即可
写一个测试类,创建电脑对象,调用useUsb方法
【要求:使用三种方式实现】
public class Demo {public static void main(String[] args) {//创建电脑对象Computer com = new Computer();//创建鼠标对象//创建鼠标实现类直接调用接口UseMouse useMouse = new UseMouse();com.useUsb(useMouse);System.out.println("---------------");//使用电脑对象调用统一方法(因为其不是静态方法)//参数使用的是创建接口的实现对象,重写方法为匿名内部类com.useUsb(new Usb() {@Overridepublic void power() {System.out.println("u盘通电");}@Overridepublic void loadDriver() {System.out.println("u盘加载驱动");}@Overridepublic void run() {System.out.println("u盘运行");}});System.out.println("---------------");//使用多态用接口引用接收 接口实现类对象//参数使用的是创建接口的实现对象,重写方法为匿名内部类Usb u =new Usb() {@Overridepublic void power() {System.out.println("键盘通电");}@Overridepublic void loadDriver() {System.out.println("键盘加载驱动");}@Overridepublic void run() {System.out.println("键盘运行");}};//使用电脑类对象调用方法,将接口引用变量传入com.useUsb(u);}
}//接口名,使用该接口则需重写
interface Usb{void power();void loadDriver();void run();
}//电脑类,统一使用接口的类中的方法(使用Usb规范)
class Computer{public void useUsb(Usb u){u.power();u.loadDriver();u.run();}
}//鼠标接口实现类
public class UseMouse implements Usb {@Overridepublic void power() {System.out.println("鼠标通电");}@Overridepublic void loadDriver() {System.out.println("鼠标加载驱动");}@Overridepublic void run() {System.out.println("鼠标运行");}
}打印结果:
鼠标通电
鼠标加载驱动
鼠标运行
---------------
u盘通电
u盘加载驱动
u盘运行
---------------
键盘通电
键盘加载驱动
键盘运行
-----------------------------------------