匿名内部类与Lambda表达式习题

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 调优/优化的 101 个建议!

转载自 MySQL 调优/优化的 101 个建议! MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈。这里提供 101 条优化 MySQL 的建议。有些技巧适合特定的安装环境,但是思路是相通的。我已经将它们分成了几类以帮助你理…

CGLIB依赖ASM(关于java字节码框架ASM的学习)

本文转自: http://www.cnblogs.com/liuling/archive/2013/05/25/asm.html 一、什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动…

二分查找实现

二分查找实现 1.调用Arrays中的binarySearch方法即可实现 【使用前提:数组必须为升序排列】 public class Demo1 {public static void main(String[] args) {int[] arr {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//查找元素定为4int key 4;int index1 Arrays.binarySea…

Java程序员必须掌握的常用Linux命令

转载自 Java程序员必须掌握的常用Linux命令 Java程序员也是半个运维了,在日常开发中经常会接触到Linux环境操作。小公司的开发人员甚至是兼了全运维的工作,下面整理了一些常用的Linux操作命令。 Linux常用指令 ls   显示文件或目录-l 列…

分类器评价指标

转自:http://www.cnblogs.com/549294286/p/3621740.html; By the way, classic post like 分类指标准确率(Precision)和正确率(Accuracy)的区别 精度和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是…

冒泡排序、快排实现

排序实现 1.可调用Arrays.sort方法实现 public class Demo3 {public static void main(String[] args) {int []arr{3,5,2,1,4};Arrays.sort(arr);//可调用Arrays.toString方法打印数组System.out.println(Arrays.toString(arr));} }打印结果: -------------------…

ElasticJob-分布式作业调度神器,你们还在用Quartz吗

转载自 ElasticJob-分布式作业调度神器,你们还在用Quartz吗?! 简介 Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。 Elastic-Job-Lite定位为轻量级无中心化解…

分类器评估参数——准确度和精度的区别(足球荔枝)

refer to http://www.mathsisfun.com/accuracy-precision.html 准确率accuracy 和 精度precision 的不同: (1)Accuracy is how close a measured value is to the actual (true) value. 准确率是测量值与实际(真)值的…

JDK7的日期时间类

JDK7的日期时间类 Date类 1.概念 Date类表示时间,时间可以精确到毫秒。创建一个Date对象,其实就表示时间的对象 2.构造方法和成员方法 public class Demo1 {public static void main(String[] args) {//空参构造(将系统当前时间封装为时间对象[毫秒值…

Java 10的10个新特性,将彻底改变你写代码的方式

转载自 Java 10的10个新特性,将彻底改变你写代码的方式 Java 9才发布几个月,很多玩意都没整明白,现在Java 10又要来了。。 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不…

如何评估模型的预测性能?

you can refer to 如何评估模型的预测性能? 一、模型评估简介 http://www2.mccombs.utexas.edu/faculty/Maytal.Saar-Tsechansky/Teaching/MIS_373/Fall2004/Model Evaluation.ppt 二、评估数据 用于模型评估的数据和用于模型训练的数据最好是两套,否则用…

JDK8的日期时间类1

localDateTime类 1.分类 将时间分成 localDate类【年月日]】 localTime类【时分秒】 localDateTime类【年月日时分秒】 2.localDateTime类【常用】 (1)构造方法 public class Demo1 {public static void main(String[] args) {//localDateTime[天时分…

Spring Boot 2.0 正式发布

转载自 重磅:Spring Boot 2.0 正式发布! Spring Boot 2.0 正式发布! 2018/03/01最新消息,传得沸沸扬扬的Spring Boot 2.0 正式发布了。 小编去看了下Spring Boot的官网,正式版本已经释放出来了!&#xff01…

LNCS用户写作指南【 Springer Computer Science Proceedings 】

转自: http://blog.csdn.net/wyskys/article/details/18075471 重点是文末的参考文献格式(主要的是 链接, 期刊论文,会议论文的引用格式) 下載地址 :http://static.springer.com/sgw/documents/1121537/a…

JDK8的日期时间类2

1.localDateTime类格式化和解析 概念 (1)格式化:把localDateTime对象转换为String,需通过DateTimeFormatter对象指定格式 (2)解析:把String转换为localDateTime对象,需通过DateTimeFormatter对象指定格式 注:localDat…

44个Java代码性能优化总结

转载自 44个Java代码性能优化总结代码优化的最重要的作用应该是:避免未知的错误。在代码上线运行的过程中,往往会出现很多我们意想不到的错误,因为线上环境和开发环境是非常不同的,错误定位到最后往往是一个非常小的原因。然而为了…

JDK8的日期时间类3

计算两个时间的间隔 方法:between【静态方法】 1.获取相隔的年月日用Period调用,参数用LocalDate类对象封装的时间 2.获取相隔的天年月日用Duration调用,参数用LocalDateTime类对象封装的时间 //计算两个时间的间隔 public class Demo7 {pu…

分类算法中常用的评价指标

转自: 分类算法中常用的评价指标 来自网络,备份勿忘! 对于分类器(分类算法),评价指标主要有:1)Precision;2)Recall;3)F-score;4)Accur…

Java 9 中的9个新特性

转载自 强悍!Java 9 中的9个新特性 你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它的更新。 这里有九个令人兴奋的新功能将与 Java 9 一起发布。 Java 平台级模块系统 Java 9 的定义功能是一套全新的模块系统。当代码库越来越大&#…

处理可能发生的异常

什么是异常? 异常指的时程序在【编译】和【运行时】的一些不正常的状况。 Java的工程师其实早就想到可能会出现这些问题,他们把常见的问题写成类。 当我们出现这些异常时,可以根据API中去查找这些异常产生的原因。 ArrayIndexOutOfBoundsException: 数组…