【Java】Java新特性--Records记录类型

news2024/12/29 12:53:54

Java 14引入了一个新的语言特性,即Records。Records是一种新的数据类,旨在简化Java中的数据类创建过程。它们提供了一种简洁的方式来创建具有默认的getter、setter、equals、hashCode和toString方法的不可变数据类。

以下是Records的基本语法:

public record MyRecord(Type field1, Type field2, ...) {
    // optional class body
}

其中,Type可以是任何有效的Java类型,如int、String、其他Record等。在Records的声明中,字段必须是公共的,并且必须具有与它们相应的访问器方法。Records也可以包含可选的字段初始化器和/或一个类体。

下面是一个简单的Records示例:

public record Person(String name, int age) {
    // optional class body
}

在这个例子中,我们创建了一个名为Person的Records,它有两个字段:name和age。Records的字段默认是public的,并且具有与它们相应的访问器方法。例如,我们可以使用name()方法来获取name字段的值,使用age()方法来获取age字段的值。

Records还具有默认的equals、hashCode和toString方法。这些方法都是根据Records的字段定义的。例如,如果两个Records具有相同的字段值,则它们被认为是相等的。默认的toString方法将返回包含Records的所有字段及其值的字符串。

除了默认的方法外,Records还可以包含自定义的方法。这些方法可以在Records的类体中定义。例如:

public record Person(String name, int age) {
    public boolean isAdult() {
        return age >= 18;
    }
}

在这个例子中,我们添加了一个名为isAdult()的方法,该方法根据年龄返回一个布尔值。

idea中也提供了创建Record类型的选择:
在这里插入图片描述
Book.java

package com.example.demo;

import java.math.BigDecimal;

public record Book(String name, BigDecimal price) {

    public Boolean isExpensive() {
        return new BigDecimal("100").compareTo(price) < 0;
    }

}

DemoMain.java

package com.example.demo;

import java.math.BigDecimal;

public class DemoMain {
    public static void main(String[] args) {
        Book book = new Book("kexuexiong", new BigDecimal("120.5"));
        System.out.println(book);
        System.out.println(book.isExpensive());
    }
}

输出:
在这里插入图片描述

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

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

相关文章

一文讲透:erp系统是什么?

erp系统是什么&#xff1f;这个看似简单的问题还真不好解答。因为现在99%的人都把ERP“系统”和ERP“软件”混淆了&#xff01; ERP原本主要是专注于制造业的信息化问题&#xff0c;我把它叫真正的ERP“系统”。 但现在基本上只要是一个软件系统都可以叫ERP系统&#xff0c;什…

【动态规划】面试题 08.01. 三步问题

Halo&#xff0c;这里是Ppeua。平时主要更新C&#xff0c;数据结构算法&#xff0c;Linux与ROS…感兴趣就关注我bua&#xff01; 文章目录 0. 题目解析1. 算法原理1.1 状态表示1.2 状态转移方程1.3初始化1.4 填表顺序1.5 返回值 2.算法代码 &#x1f427; 本篇是整个动态规划的…

9.2 消息对话框 画板 定时器

#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//设置定时器timernew QTimer(this);timeidthis->startTimer(1000);connect(timer,&QTimer::timeout,this,&Widget::timeout_slot);speechernew QTextToSpeech(this);//边框this-&…

天眼情报分析——编程赛道——研究对象001续

前言&#xff1a; 此次情报分析依旧会分为几大块 一、ACWING 算法基础课 1.高精度加法和减法听都没听过 1.什么是高精度加减法&#xff1f; "高精度加法"和"高精度减法"是一类编程题目&#xff0c;通常出现在算法竞赛和在线编程平台上&#xff0c;比如…

金蝶云星空和金蝶云星空单据接口对接

金蝶云星空和金蝶云星空单据接口对接 接入系统&#xff1a;金蝶云星空 金蝶K/3Cloud&#xff08;金蝶云星空&#xff09;是移动互联网时代的新型ERP&#xff0c;是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”&#xff0c;旨在帮助企业…

【科研论文配图绘制】task8 总结与回顾

task8 总结与回顾&#xff0c;这次组队学习大致掌握了常见python绘图工具包的使用&#xff0c;整体上和matlab的语法类似&#xff0c;也是用画布形式控制元素的绘制。印象深刻的是seaborn的使用&#xff0c;在之前做波士顿房价预测时候先接触了seaborn绘制的散点图、直方图和核…

手写Ribbon基本原理

本文已收录于专栏 《中间件合集》 目录 概念说明什么是RibbonRibbon和Nginx负载均衡的区别 工作流程代码实现RibbonSDK发送请求端引入RibbonSDK和Nacos的依赖配置文件中填写负载均衡策略调用代码 接收请求端执行效果发送请求端接收请求端 总结提升 概念说明 什么是Ribbon Ribb…

揭秘企业标准化作业:提升效率、降低成本、保障质量!为什么需要推行?

企业标准化作业是现今生产车间中出现频率非常高的一个词&#xff0c;那么什么是企业标准化作业&#xff1f;企业为什么推行标准化作业&#xff1f;标准化作业的实施有哪些好处&#xff1f;实施过程又有哪些难点呢&#xff1f;今天就来说一说&#xff01; 企业标准化作业是对生产…

智能制造效率与创新:RFID智能设备的引领作用

在现代制造业中&#xff0c;如何提升生产效率、降低成本、实现创新已经成为制造企业持续追求的目标。随着科技的不断进步&#xff0c;智能制造RFID智能设备正逐渐成为实现这些目标的得力工具。本文将探讨智能制造RFID智能设备在提升制造效率和创新方面的引领作用。 实时生产监控…

如何使用ArcGIS去除卫星影像上的云

虽然目前发布的地图都是对云量进行过筛选&#xff08;一般低于20%&#xff09;&#xff0c;但是还是有可能会遇到有云的情况&#xff08;特别是下载历史影像的时候&#xff09;&#xff0c;那么这些云应该怎么去除呢&#xff0c;我们可以尝试使用ArcGIS进行处理。 识别像素 将…

通过使用过硫酸铵溶液轻松预处理铜催化剂基底具有独特底部轮廓的剥离光刻胶的开发

引言 石墨烯是sp2杂化碳原子的二维蜂窝晶格&#xff0c;自首次成功分离和表征单层石墨烯以来就引起了广泛关注。载流子迁移率、稳健的机械公差和高光学透明度为未来的超大规模器件的应用提供了巨大的利用机会。因此&#xff0c;英思特提出了化学剥离、外延生长、热解和化学气相…

FreeRTOS中断与任务之间同步(Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,422 )

前言&#xff1a; FreeRTOS中&#xff0c;中断需要注意几点&#xff1a; 何时使用中断&#xff1b;中断服务函数&#xff08;ISR&#xff09;要处理的数据量有多大&#xff0c;通常我们希望中断的切换越快越好&#xff0c;也就是说&#xff0c;ISR尽量采用耗时较少的处理方式…

2000-2022年上市公司融资约束SA指数(含原始数据+计算方法+计算结果)

2000-2022年上市企业的融资约束指数&#xff08;含原始数据计算方法计算结果&#xff09; 1、时间&#xff1a;2000-2022年 2、范围&#xff1a;沪深A股上市公司 3、指标&#xff1a; 证券代码、证券简称、统计截止日期、是否发生ST或*ST或PT、是否发生暂停上市、行业代码、…

【Java 基础篇】Java多态:让你的代码更灵活而强大

多态是面向对象编程中的一个重要概念&#xff0c;它允许我们在不同的对象上调用相同的方法&#xff0c;但根据对象的不同&#xff0c;可以产生不同的行为。在 Java 中&#xff0c;多态性是一个强大的特性&#xff0c;它有助于代码的可扩展性和可维护性。本篇博客将深入探讨 Jav…

javaee spring aop实现事务 项目结构

spring配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.springframewo…

搭建hadoop集群的常见问题及解决办法

问题一: namenode -format重复初始化 出现问题的原因是重复初始化时会重新生成集群ID&#xff0c;而dn还是原先的集群ID&#xff0c;两者不匹配时无法启动相应的dn进程。 怎么查找问题原因&#xff1a;在logs目录下找到对应节点的.log文件&#xff0c;使用tail -200 文件名来查…

(vue)Vue项目中使用jsPDF和html2canvas生成PDF

(vue)Vue项目中使用jsPDF和html2canvas生成PDF 效果&#xff1a; 安装与使用 1.&#xff1a;安装jsPDF和html2canvas npm install jspdf html2canvas2.在需要生成PDF文档的组件中引入jsPDF和html2canvas <template><div><el-button type"primary"…

Android平台GB28181历史视音频文件检索规范探讨及技术实现

技术背景 我们在做Android平台GB28181设备接入侧模块的时候&#xff0c;特别是执法记录仪或类似场景&#xff0c;系统除了对常规的录像有要求&#xff0c;还需要能和GB28181平台侧交互&#xff0c;比如实现设备侧视音频文件检索、下载或回放。本文假定记录仪或相关设备已经完成…

Gin项目实战

Gin项目实战 Gin博客项目-项目架构Gin博客项目-集成gormGin博客项目-集成Bootstrap创建用户表单Gin 博客项目-实现控制器和路由Gin 博客项目-设计静态页面Gin 博客项目-用户注册Gin 博客项目-用户登录Gin 博客项目-集成markdown编辑器Gin 博客项目-创建博客模型和DAOGin 博客项…

MediaBox助力企业一站式获取音视频能力

以一只音视频百宝箱&#xff0c;应对「千行千面」。 洪炳峰、楚佩斯&#xff5c;作者 大家好&#xff0c;今天我分享的主题是MediaBox——行业音视频数字化再加速。 根据权威数据表明&#xff0c;65%的行业数字化信息来自视频&#xff0c;基于此&#xff0c;音视频技术对于行…