JDK1.8新增特性

新特性:

Lambda表达式: (语法三要素:参数、箭头、代码)

JDK1.8引入的一种新语法Lambda表达式,它简化了匿名内部类的使用和提高代码的可读性。

java 复制代码
/**正常写法创建Runable**/
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("*************");
    }
};

/**Lambda表达式写法*/
Runnable runnable = () -> System.out.println("*************");

接口提供默认方法和静态方法:

java 复制代码
public interface UserService {
    /**
     * 默认方法
     */
    default void add(){
        System.out.println("add");
    };
   
    /**
     * 静态方法
     * @param id
     * @return
     */

    public static User getUser(String id){
        return new User();
    };
}

Stream API :

JDK1.8引入的一种新抽象流,提供一种新的处理数据方式,对集合或数据元素进行函数式编程数据处理;所有 Collection 集合都可以通过 stream 默认方法获取流。

java 复制代码
  List<String> list = Arrays.asList("ASDSFSDSF","NBDS","WKEKRERE","BC8D");
            
  //通过stream流过滤列表中长度等4的字符串列表
  List<String> newList = list.stream().filter(pre->pre.length()==4).collect(Collectors.toList());
  //通过stream流把列表内容转换小写并返回一个新的列表
  List<String> toLowerCaseList = list.stream().map(String::toLowerCase).collect(Collectors.toList());
  //获取集合长度
  long count = list.stream().count();
  //获取集合第1个元素
  Optional<String> first = list.stream().findFirst();

函数试接口 :

1、自定义函数试接口

java 复制代码
@FunctionalInterface
public interface MyFunctionalInterface {
    int add(int a,int b);
}
//调用
MyFunctionalInterface myFunctionalInterface = (a,b)-> a+b;
int a = myFunctionalInterface.add(5,2);
System.out.println(a);

2、Predicate<T>:判断型接口输入一个参数T,返回一个布尔值

java 复制代码
 Predicate<String> isEmpty = p -> p.isEmpty();
 // 输出: false
 System.out.println(isEmpty.test("abc"));

3、Function<T,R>:函数试接口有输入参数T和返回结果R,用于执行一些转换逻辑。

java 复制代码
Function<Integer, Integer> function = (Integer i) -> i * i;
// 输出: 100
System.out.println(function.apply(10));

4、Supplier<T>:供给型接口,无参数返回数据类型T。

5、Consumer<T>:消费型接口,有参数T,无返回值。

java 复制代码
public class User {
    public void follow(final String str) {
        System.out.println("Following the " + str);
    }
}

Consumer<String> follow = user :: follow;
follow.accept("Consumer....");

方法引用 :

1、构造器引用: ClassName::new

2、类的静态方法引用: ClassName::staticMethodName

3、对象的实例方法引用: object::methodName

4、特定类型的实例方法引用:TypeName::methodName

LocalDate API :

1、LocalDate : 年月日;

2、LocalTime : 时分秒;

3、LocalDateTime : 年月日时分秒;

4、Period : 两个日期之间的时间间隔;

5、Duration : 两个时间之间的持续时间;

相关推荐
guodingdingh23 分钟前
软件开发工作问题总结0718
java·开发语言·数据库
咖啡八杯2 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育2 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
糖果店的幽灵2 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
腻害兔4 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
SeaTunnel4 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
碎光拾影4 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Marst Code5 小时前
(python)2026Plotly 库评估:交互式可视化到底值不值得引入?
开发语言·python
Miao121315 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
腻害兔5 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:支付模块 yudao-module-pay,一个让产品经理都看懂的支付中台设计
java·前端·vue.js·产品经理·ai编程