Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名。泛型编程,故如其名,是一个泛化的编程方式。其实现原理为程序员编写一个函数/类的代码示例,让编译器去填补出不同的函数实现
泛型
泛型的语法定义
class 类名 <泛型标识,泛型标识,…>{ private 泛型标识1,变量名;常用的泛型标识:T,E,K,V } 里面正常写法
public class GenericDemo<K> {
//定义数组
private K[] arr;
}
泛型的使用语法
- 类名<具体的数据> 对象名 = new 类名<具体的数据类型>()
- jdk1.7之后,后边的<>可以省略不写
- 类名<具体的数据> 对象名 = new 类名<>()
泛型总结
- 类型参数化,让类的定义更加通用
- 泛型不支持基本类型,因为在编译时,基本类型无法转换成Object
- 泛型类在创建对象的时候,如果没有指定数据类型,将按照Object类型来操作
- 同一泛型类在逻辑上可以看成是多个不同的类型,但实际是相同的类型
从泛型类派生子类
子类也是泛型,子类和父类的泛型要一致 (例如:连泛型的类型T要一致,写的内容相同),
如果父类没有指明类型,则父类要按照Object类型处理
public class Child<T> extends Parent<T> {
}
子类不是泛型,父类要明确泛型类型,
如果父类没有指明类型,则父类要按照Object类型处理
泛型接口
- 泛型接口的语法定义:interface 接口名<泛型标识1,泛型标识2,…>{ 泛型标识 方法名(); … }
- 实现类也是泛型,实现类和接口的泛型要一致,如果接口没有指明类型,则接口要按照Object类型处理
- 实现类不是泛型,接口要明确泛型接口的数据类型,如果接口没有指明类型,则接口按照Object类型处理
lambda表达式
lambda表达式概念
- 面向对象的编程中强调,必须通过对象的形式去做事情;函数思想则是尽量忽略对象的复杂写法,“强调做什么,而不是以什么形式去做”
- lambda表达式就是函数思想的体现
- lambda表达式就是定义函数式的简化写法,而不是函数调用的简化写法
lambda表达式格式
- 三要素:形式参数,箭头,代码块
- 形如:(形参)->代码块
- 形参如果多个参数,参数之间逗号隔开,如果没有参数,留空括号,不用留空格
- -> 一定的是英文,固定写法,表示执行
- 代码块:具体要做的事情
- 使用前提:使用接口:接口当中有且只有一个抽象方法
代码示例:
package com.lambda;
public class Lambda {
public static void main(String[] args) {
//正常写法
Mythread mythread = new Mythread();
Thread t = new Thread(mythread);
t.start();
//匿名内部类
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("多线程1就绪了");
}
}).start();
//lambda表达式:创建线程
new Thread(()->{
System.out.println("多线程2就绪了");
}).start();
}
}
class Mythread implements Runnable{
@Override
public void run() {
System.out.println("多线程就绪");
}
}
到此这篇关于Java lambda表达式与泛型整理总结的文章就介绍到这了,更多相关Java lambda表达式与泛型内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:Java lambda表达式与泛型整理总结


猜你喜欢
- Springboot整合minio实现文件服务的教程详解 2022-12-03
- 深入了解Spring的事务传播机制 2023-06-02
- Spring Security权限想要细化到按钮实现示例 2023-03-07
- Java中的日期时间处理及格式化处理 2023-04-18
- JSP页面间传值问题实例简析 2023-08-03
- Java实现顺序表的操作详解 2023-05-19
- 基于Java Agent的premain方式实现方法耗时监控问题 2023-06-17
- JSP 制作验证码的实例详解 2023-07-30
- ExecutorService Callable Future多线程返回结果原理解析 2023-06-01
- SpringBoot使用thymeleaf实现一个前端表格方法详解 2023-06-06