当前位置: 首页 > news >正文

lambda+sealed+record

引言

随着语言发展,java中的语法也再丰富和变迁,这里列举一些比较常用的又容易忽略的地方,有些特性需要适当使用,不要使用过当或者过早使用,使代码难以维护。

1 interface

Java 接口(Interface)中可以包含以下几种内容:

‌1常量(Constants)‌
接口中的成员变量默认是 public static final 的,因此它们实际上是常量。
例如:int CONSTANT = 10; 等价于 public static final int CONSTANT = 10;

2 抽象方法(Abstract Methods)‌
接口中的方法默认是抽象的,没有方法体。
实现接口的类必须提供这些方法的具体实现。
从 Java 8 开始,可以省略 public abstract 修饰符。

2 默认方法(Default Methods)‌
从 Java 8 开始,接口可以包含带有方法体的默认方法。
使用 default 关键字修饰,实现类可以不实现这些方法。

3 静态方法(Static Methods)‌
从 Java 8 开始,接口可以包含静态方法。
使用 static 关键字修饰,必须通过接口名称调用。

‌4 私有方法(Private Methods)‌
从 Java 9 开始,接口可以包含私有方法。
用于辅助默认方法或静态方法实现逻辑复用。

5 ‌嵌套类型(Nested Types)‌
接口可以包含内部类、接口、枚举等嵌套类型。

2 lambda

函数式接口(Functional Interface)是Java 8引入的一个核心概念,指的是那些有且仅有一个抽象方法的接口(但可以有多个默认方法或静态方法)。这一特性与Lambda表达式紧密相关,因为Lambda表达式可以作为函数式接口的实现。函数式接口的定义通常使用@FunctionalInterface注解来明确标识,尽管这个注解不是必需的,但它可以帮助编译器检查接口是否符合函数式接口的定义。所以如果是函数式接口,最好强制加上注解。

函数式接口可以继承,继承类也最好加上注解。子类不能再加上抽象方法,不然就会多出一个抽象方法,系统没法处理。默认方法和静态方法可以被覆盖和增加

函数值接口产生的背景主要是适应函数式变成风格,简化代码编写

//加大括号 TestFun3<String> tf3 = () -> {return "xx";}; //或者自动使用最后一句话作为返回值 // TestFun3<String> tf3 = () -> "xx";

常用函数式接口

3 sealed

密封类使得类的控制更细粒度,‌Java15‌首次作为预览特性引入,Java 16‌继续作为预览特性进行改进,Java 17‌正式成为标准特性,Java25‌对密封机制进行了升级,将其扩展为"可扩展密封体系"

//java25 定义一个密封类 public sealed abstract class Shape permits Circle, Rectangle, Triangle { public abstract double area(); }

使用关键字定义sealed abstract,必须使用permits限制可继承子类

4 record

Java的record 关键字是在Java14中作为预览特性引入,并在 Java 16 中正式成为标准特性。它主要用于简化不可变数据类的定义,减少样板代码的编写。

基本语法
public record RecordName(参数列表) { }


主要特点:
‌1 自动实现方法‌:编译器会自动生成构造方法、getter 方法、equals()、hashCode() 和 toString() 方法。
2‌ 不可变性‌:所有字段默认为 final,创建后无法修改。
‌3 简洁语法‌:只需声明字段,其他代码由编译器自动生成。
‌4 继承关系‌:record 类隐式继承 java.lang.Record 类,不能显式继承其他类。


与普通类的区别
1 record 类是不可变的,所有字段都是 final
2 不支持手动添加非 final 字段
3 可以声明静态字段、静态方法和实例方法
4 不能继承其他类,但可以实现接口

// 定义一个简单的 record public record Person(String name, int age) { } // 使用 record Person person = new Person("Alice", 30); System.out.println(person.name()); // 访问 name 字段 System.out.println(person.age()); // 访问 age 字段 System.out.println(person); // 自动调用 toString()

Java record 类的大括号内可以声明以下成员:
1 ‌静态字段‌:可以声明静态的常量字段
‌2 静态方法‌:可以定义静态方法
‌3 实例方法‌:可以定义实例方法
‌4 构造方法‌:可以定义构造方法(包括显式构造方法和紧凑构造方法)
‌5 嵌套类型‌:可以声明内部类、接口、枚举等嵌套类型

//定义一个简单的 record public record Person(String name, int age) { // 静态字段 private static final String DEFAULT_NAME = "Unknown"; // 静态方法 public static Person of(String name, int age) { return new Person(name, age); } // 实例方法 public String displayName() { return "Name: " + name; } // 构造方法(紧凑构造方法) public Person { if (age < 0) { throw new IllegalArgumentException("Age cannot be negative"); } } // 嵌套类型 public static class Info { // 内部类定义 } }
http://www.jsqmd.com/news/396840/

相关文章:

  • 笔记:对拍器
  • 【花雕学编程】Arduino BLDC 之抗辐射强化型特种机器人
  • day018
  • 2026探寻市场口碑好的三轮滚丝机实力厂家,滚丝机 /二轮滚丝机 /三轮滚丝机 /滚牙机 ,三轮滚丝机厂家推荐 - 品牌推荐师
  • 毕业论文神器!专科生专属AI论文网站 —— 千笔·专业学术智能体
  • Java求职面试实战:互联网大厂技术场景深度解析
  • 2026东方高端珠宝品牌大盘点,尽显东方韵味,东方高端珠宝/高端日常佩戴珠宝/高端珠宝,东方高端珠宝品牌哪个好 - 品牌推荐师
  • RPDR A Round-trip Prediction-Based Data Augmentation Framework for Long-Tail Question Answering
  • 真心不骗你 10个降AI率软件降AIGC网站测评:专科生必看的降AI率工具推荐
  • DeepVision-103K A Visually Diverse, Broad-Coverage, and Verifiable Mathematical Dataset for Multimod
  • 用过才敢说 AI论文写作软件 千笔AI VS 万方智搜AI,研究生写论文更高效!
  • 2026年郭氏正骨机构盘点:如何选择适合你的,郭氏正骨,郭氏正骨供应商排行 - 品牌推荐师
  • Mine and Refine Optimizing Graded Relevance in E-commerce Search Retrieval
  • 导师推荐 10个降AI率工具测评:自考降AI率全攻略
  • DeepContext Stateful Real-Time Detection of Multi-Turn Adversarial Intent Drift in LLMs
  • 格式总出错?9个一键生成论文工具测评:继续教育毕业论文+科研写作必备神器
  • 基于Python基于flask的酒店管理系统演示录像2024-Pycharm django
  • 交稿前一晚!千笔,MBA论文写作救星!
  • 万里通积分卡的最佳使用策略!轻松兑换最优价值 - 团团收购物卡回收
  • 20天、20000次对话、12亿Token——Claude Code 重度用户使用复盘
  • 基于Python基于flask的框架的企业人事员工绩效考核管理系统-vue-Pycharm django
  • 2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第2题)
  • SI标准网站
  • 回收卡券有诀窍:山东一卡通回收流程详解 - 团团收购物卡回收
  • 海洋科考船上的AI与边缘计算
  • 股市赚钱学概论:赚钱理之四,赚稳健的钱
  • 镜像视界技术护城河与全球竞品结构对标压制报告——从视频系统竞争到空间操作系统代际替换
  • 镜像视界技术参数锁定与封标级专家质询攻防体系——空间计算操作系统的可验证能力结构
  • 深夜修图指南:七行代码拯救你的暗光照片
  • 基础入门 React Native 鸿蒙跨平台开发:react-native-easy-toast三方库适配