匿名内部类

参考:https://www.runoob.com/w3cnote/java-inner-class-intro.html

进入后搜索匿名内部类。

函数型接口

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

例如,我们常用的Runnable接口,翻看源码发现,它只有一个抽象方法run,它就是一个函数型接口。

@FunctionalInterface
public interface Runnable {
public abstract void run();
}

  参考:https://www.runoob.com/java/java8-functional-interfaces.html

匿名内部类与函数型接口简化一个线程案例:

简化前:

package _20191203;
/**
* 创建线程的方法一:继承Thread
* @author UID
*
*/
public class ThreadTest{
public static void main(String[] args) {
new Thread(new ThreadRun()).start();//主要看这里
for(int i = 0;i < 200;i++) {
System.out.println("一边听歌");
}
} } class ThreadRun implements Runnable{
@Override
public void run() { //必需重写run方法
for(int i = 0;i < 200;i++) {
System.out.println("一边敲代码");
}
}
}

  

简化后:

package _20191203;
/**
* 创建线程的方法一:继承Thread
* @author UID
*
*/
public class ThreadTest{
public static void main(String[] args) {
new Thread(new Runnable(){ //主要看这里
@Override
public void run() {
for(int i = 0;i < 200;i++) {
System.out.println("一边敲代码");
}
}
}).start();
for(int i = 0;i < 200;i++) {
System.out.println("一边听歌");
}
}
}

 

引入lamda表达式 

emm...不好讲啊。

上面的代码还可以使用lamda表达式进一步简化。

lamada时jdk 8 的新特性,它不是java独创的,实际上它来源自scale社区,并且被越来越多的程序中使用,它可以大大简化代码。

参考:https://baike.baidu.com/item/Lambda%E8%A1%A8%E8%BE%BE%E5%BC%8F/4585794?fr=aladdin

lamda表达式的使用方法参考:https://www.cnblogs.com/coprince/p/8692972.html

可以使用lamda表达式的接口就是函数型接口,在上面的案例中,Runnable接口就是一个函数型接口,所以这里我们可以使用lamda表示式对上面的例子进行简化:

public class ThreadTest{
public static void main(String[] args) {
//new Thread(new ThreadRun()).start();
new Thread(()->{ //主要看这里 lamda表达式
for(int i = 0;i < 200;i++) {
System.out.println("一边敲代码");
}
}).start();
for(int i = 0;i < 200;i++) {
System.out.println("一边听歌");
}
}
}

  

当抽象方法有参数时,对应写成的(参数)->{代码}

而且不必写参数类型

最新文章

  1. SageCRM 快速获取连接中的SID的方法
  2. SQList
  3. 利用CSS3D效果制作简易旋转木马效果
  4. 安装并配置前端自动化工具——grunt
  5. 数据结构看书笔记(二)--算法(Algorithm)简介
  6. javascript的escape()方法
  7. JMS【四】--Spring和ActiveMQ整合的完整实例
  8. 1001Sum Problem
  9. VC++6.0环境下调试c语言代码的方法和步骤_附图
  10. c#等待所有子线程执行完毕方法
  11. Avoiding “will create implicit index” NOTICE
  12. 编程内功修炼之数据结构—BTree(二)实现BTree插入、查询、删除操作
  13. NSFileManager的应用
  14. 全局文件 pch
  15. Java并发编程:volatile 关键字
  16. Oracle服务启动项
  17. Kafka技术内幕 读书笔记之(六) 存储层——服务端处理读写请求、分区与副本
  18. .net多站点通过StateServer实现session共享
  19. JavaScript错误:Maximum call stack size exceeded错误
  20. 使用windows性能计数器监控cpu使用率

热门文章

  1. c++中 string类型 转为 char []类型
  2. oracle的一些状态查询
  3. 7kyu kata
  4. 干货 | 10分钟教你用column generation求解vehicle routing problems
  5. 【NOIP2014】真题回顾
  6. 原创:logistic regression实战(一):SGD Without lasso
  7. 转载:基于 Hive 的文件格式:RCFile 简介及其应用---推酷
  8. 原创:自定义spark GraphX中的collectNeighborIds方法
  9. mysql upper() 函数
  10. node省市区三级数据性能测评