匿名内部类与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盘运行
---------------
键盘通电
键盘加载驱动
键盘运行
-----------------------------------------

匿名内部类与Lambda表达式习题相关推荐

  1. 匿名内部类与Lambda表达式

    匿名内部类与Lambda表达式 一.匿名内部类 谁没有名字:匿名内部类指的是接口的实现类 或者 抽象类的子类没有名字. 1.前提: 1)必须要有一个接口.抽象类(普通类也可以,但是方法不会强制重写,不 ...

  2. Java匿名内部类和Lambda表达式

    Java匿名内部类和Lambda表达式 一.Java匿名内部类 二.JavaLambda表达式 全部代码: 代码运行结果: 一.Java匿名内部类 我们在使用匿名内部类时,需要记住以下几个重要的知识点 ...

  3. java 匿名函数 构造_Java匿名内部类与Lambda表达式

    匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象 ...

  4. Java基础学习总结(69)——匿名内部类与Lambda表达式

    前言 Java Labmda表达式的一个重要用法是简化某些匿名内部类(Anonymous Classes)的写法.实际上Lambda表达式并不仅仅是匿名内部类的语法糖,JVM内部是通过invokedy ...

  5. 【Android-Kotlin】匿名内部类与Lambda 表达式(附RecycleView监听)

    一:匿名内部类 一个Test类,里面 1)1个属性 2)1个方法 a.该方法传递的参数是一个接口对象,目的是在这个方法中可以通过这个对象来调用接口方法 接口对象的接口TestInterFace内部有一 ...

  6. 匿名内部类以及Lambda表达式(Java和C#)

    就来说一说这个匿名内部类,用Java做例子,后面插一点c#.这个东西我之前也知道了很久,一直没有认真去看过,这次就来看看吧,今天的代码量相对很多. 匿名内部类 这里就说匿名内部类,关于其他内部类老规矩 ...

  7. 函数:lambda表达式+习题复习

    ##lambda表达式            ※匿名函数:可以用lambda关键字来创建匿名函数             (基本的语法就是在冒号的前边是原函数的参数,冒号后边是原函数的返回值,另外可以 ...

  8. 匿名内部类和Lambda表达式

    匿名内部类 匿名内部类主要是针对继承(类继承.抽象类继承.接口实现)这一概念而形成的一种简化定义,首先我们来观察如下一段代码. 范例:观察传统实现方式的问题 interface IMessage {p ...

  9. 工具技巧和读文档 | 读函数式编程接口文档 | 匿名内部类 | lambda表达式 |IDEA

    Function接口,函数式接口 按入参返回值分类,大概分为4种类型,再加上多个入参就又多了Bi开头的两种. 有Ctrl+P的时候不懂参数列表该写啥,就先Ctrl+ALT看下入参类型的相关实现类! 一 ...

最新文章

  1. PCL之C++动态内存学习
  2. electron仿百度网盘-UI搭建思路
  3. systypes的详解
  4. Swift实现CoreData存储数据
  5. ajax mysql项目 react_React16时代,该用什么姿势写 React ?
  6. 妈妈帮×神策智能推荐,打造人性化智趣母婴服务
  7. php如何生成唯一随机数,PHP实现生成唯一会员卡号(不重复的随机数)
  8. Python的类示例
  9. Installing OwnCloud 9 on Debian 8
  10. ASP.NET Atlas简单控件介绍——InputControl,TextBox,Button和CheckBox
  11. googel的扩展插件导出与导入
  12. 安卓beforetextchanged_Android TextWatcher.afterTextChanged与TextWatcher
  13. cisco2811 一对一IP地址映射
  14. JavaScript设计模式之装饰者模式
  15. Samsung Bada程序介绍——BeijingPark
  16. 【强迫症患者的福音】Win10去掉桌面快捷方式箭头
  17. 什么是软件项目验收,软件项目验收测试方法分享
  18. Mybatis下传入时间条件,查询慢的优化方法
  19. Log4j-自动发送日志邮件
  20. 关系数据库、关系代数和关系运算

热门文章

  1. 数据结构(终极线段树篇)
  2. Hamburger Steak
  3. HDU - 4608 I-number
  4. C - Cats Gym - 102875C
  5. 牛客题霸 [买卖股票的最好时机] C++题解/答案
  6. Reordering the Cows
  7. CF1368G Shifting Dominoes(扫描线求矩阵的并集)
  8. 切题 (problem)(线段树+最大流最小割)
  9. P5644-[PKUWC2018]猎人杀【NTT,分治】
  10. ssl1197-质数和分解【dp练习】