SpringBoot3(一)动力节点总结

目录

0、有用的新特性

一、Record

1.1、Record的介绍

1.2、Record的声明

1.3、Record的创建


0、有用的新特性

        JDK8-19 新增了不少新特性,这里我们把实际常用的新特性,给大家介绍一下,包括以下几个方面:

  • Java Record
  • Swich 开关表达式
  • Text Block 文本块
  • var 声明局部变量
  • sealed 密封类

一、Record

1.1、Record的介绍

        Java14 中预览的新特性叫做 Record,在 Java 中,Record 是一种特殊类型的 Java 类。可用来创建不可变类,例如这个类中的属性值,一经赋值后不可再改变了。

        任何时候创建 Java 类,都会创建大量的样板(样例)代码,我们可能会使用Lombok简化:

  •  每个字段的 set,get 方法
  • 公共的构造方法
  • 重写 hashCode, toString(), equals()方法

        Lombok是通过插件和预编译的方式实现的,不是语言级别的,而Record是语言级别的Lombok,可以使用Record代替Lombok, 简化样例代码的编写、简化开发,如下特点:

  1. 带有全部参数的构造方法
  2. public 访问器:属性的访问是通过公共的方法
  3. 在编译Record过程中,会生成toString(),hashCode(),equals()等方法
  4. 没有遵循 Bean 的命名规范,无 set,get 方法
  5. 类以及所有的属性都是final修饰的, Record不能被继承,Record 为隐士的 final 类。除此之外与普通类一样
  6. 不可变类,不能被继承,通过构造创建 Record
  7. final 属性,能读它的属性,但是不可修改
  8. 不能声明实例属性,能声明 static 静态成员

1.2、Record的声明

Record是JDK14的特性,所以你的jdk语言级别必须是14以上,否则就没有Record选项:

 现在就有了:

        Record是用来作为数据的载体,存储数据用的,创建方式如下:

public record Student(Integer id,String name,String email,Integer age) {//1、小括号里面是它的构造方法//2、使用record关键字,代表Student它是一个record类型//3、不需要做其它的任何操作,record类型就创建好了,包含四个属性}

    1、小括号里面是它的构造方法
    2、使用record关键字,代表Student它是一个record类型
    3、不需要做其它的任何操作,record类型就创建好了,包含四个属性

我们现在来单元测试一下,alt+回车:

1.3、Record的创建

创建Record对象和创建普通的java对象一模一样:

public class StudentTest {@Testpublic void testRecord() {Student lisi = new Student(1001,"lisi","lisi@qq.com",20);//Student[id=1001, name=lisi, email=lisi@qq.com, age=20] System.out.println(lisi);}
}

         现在lisi这个对象,他的四个属性是固定好的了,只能读取,无法修改!现在我如何来读取他的四个属性呢,注意:

        1、Record类型没有遵循Java Bean 的命名规范,无 set,get 方法,我们通过Public访问器来获取属性值;

        2、因为没有set方法,所以通过Record创建的对象,属性值是不可变的,这样Record对象在使用上也就更加安全; 

        3、Record重写了hashCode, toString(), equals()方法,例如你输出lisi,其实是调用的lisi.toString()方法;

public class StudentTest {@Testpublic void testRecord() {Student lisi = new Student(1001,"lisi","lisi@qq.com",20);//Student[id=1001, name=lisi, email=lisi@qq.com, age=20]System.out.println(lisi);//无set、get方法,通过Public访问器来获取属性值,这些都是公共的方法:Integer id = lisi.id();String name = lisi.name();System.out.println("id =" + id);System.out.println("name =" + name);}
}

 

 

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

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

相关文章

Gold-YOLO(NeurIPS 2023)论文与代码解析

paper:Gold-YOLO: Efficient Object Detector via Gather-and-Distribute Mechanism official implementation:https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO 存在的问题 在过去几年里,YOLO系列已经…

东南大学博士,华为上班5年,月薪达到4万4000,年终奖近10万

东南大学博士,华为上班5年,月薪达到4万4000,年终奖近10万 近日有华为员工爆料真实薪资,该网友是东南大学2018级博士,华为工作近5年,薪资达到4万4000,年终奖近10W。 该网友华为职场履历如下&am…

Qt6入门教程 10:菜单栏、工具栏和状态栏

目录 一.菜单栏 1.Qt Designer 1.1添加菜单和菜单项 1.2添加二级菜单 1.3给菜单和菜单项添加图标 1.4给菜单项添加功能 2.纯手写 二.工具栏 1.Qt Designer 1.1添加工具栏按钮 1.2工具栏的几个重要属性 2.纯手写 三.状态栏 1.Qt Designer 2.纯手写 用Qt Creator新…

LeetCode-题目整理【8】:罗马数字转整数、整数转罗马数字

罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,…

代码随想录训练营第三十期|第十四天|二叉树part01|● 理论基础● 递归遍历 ● 迭代遍历● 统一迭代

144. 二叉树的前序遍历 - 力扣(LeetCode) /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode…

iptables命令详解

简介 iptables 是 Linux 系统中用于配置 IPv4 数据包过滤规则的工具。它是 Linux 内核中 Netfilter 框架的一部分,通过设置规则,可以实现网络包的过滤、NAT 转发、端口映射等功能。 基本概念 表(Tables): filter 表…

Nginx_入门

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 Nginx_入门 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、Nginx概述二、Nginx的应用…

GPU与SSD间的P2P DMA访问机制

基于PCIe(Peripheral Component Interconnect Express)总线连接CPU、独立GPU和NVMe SSD的系统架构。 在该架构中,PCIe Swicth支持GPU与SSD之间快速的点对点直接内存访问(peer-to-peer, p2p DMA)。通常情况下&#xff0…

Qt-QFileDialog保存文件及获取带扩展名的文件名

正确用法 QFileDialog dialog(this, "Save File", QDir::currentPath(), "Text Files (.txt)"); dialog.setAcceptMode(QFileDialog::AcceptSave); dialog.setDefaultSuffix("txt"); // << if (!dialog.exec())return; QString fileName …

latex添加图片以及引用的实例教程

原理 在 LaTeX 中插入图片&#xff0c;通常是使用 \includegraphics 命令&#xff0c;它是由 graphicx 包提供的。首先&#xff0c;确保在文档的前言部分&#xff08;\documentclass 之后和 \begin{document} 之前&#xff09;包含了 graphicx 包。 下面是一个基本的例子来展…

全志D1-H芯片Tengine支持

简介 ​ Tengine 是 OPEN AI LAB 推出的边缘 AI 计算框架&#xff0c;致力于解决 AIoT 产业链碎片化问题&#xff0c;加速 AI 产业化落地。Tengine 为了解决 AIoT 应用落地问题&#xff0c;重点关注嵌入式设备上的边缘 AI 计算推理&#xff0c;为海量 AIoT 应用和设备提供高性…

(学习日记)2024.01.20:通用工具库stdlib.h里好玩的函数

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

LeetCode 2765.最长交替子数组:O(n)的做法(两次遍历)

【LetMeFly】2765.最长交替子数组&#xff1a;O(n)的做法&#xff08;两次遍历&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/longest-alternating-subarray/ 给你一个下标从 0 开始的整数数组 nums 。如果 nums 中长度为 m 的子数组 s 满足以下条件&a…

开始学习vue2基础篇(指令)

一、 内容渲染指令 > {{}} 模板渲染&#xff08;模板引擎&#xff09; 1. {{数据绑定}} 2. {{简单计算}} 3. {{简单逻辑运算}}&#xff08;三元运算&#xff09; 4. {{做简单 js 判断}} 注意&#xff1a;不能写语句、不能解析 html 渲染、不能放在在属性身上 > v-…

使用Flink的所有pom文件

Flink中所有的pom文件中的索引 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xs…

[小程序]页面的构建

一、视图容器组件 ①View 视图区域组件&#xff0c;类似于HTML中的div&#xff0c;可以用来按块实现页面布局效果&#xff0c;具体实例如下&#xff1a; <view class"dock"><view>A</view><view>B</view><view>C</view> &…

大数据基础设施搭建 - Hbase

文章目录 一、解压压缩包二、配置环境变量三、修改配置文件3.1 修改hbase-env.sh3.2 修改hbase-site.xml3.3 修改regionservers 四、解决HBase和Hadoop的log4j兼容性问题&#xff0c;使用Hadoop的jar包五、HBase远程发送到其他集群六、启动七、停止八、基本操作8.1 进入Hbase客…

常用界面设计组件 —— 按钮组件、布局组件

2.4 按钮组件2.5 布局组件 2.4 按钮组件 QPushButton、QRadioButton 、QCheckBox都从 QAbstractButton&#xff0c;拥有一些共同的属性&#xff0c;如下图所 示&#xff1a; 图标使用setIcon()来设置&#xff0c;文本可以在构造函数或通过 setText()来设置。 可以使用 isCheck…

docker运行nginx不生效

docker运行nginx镜像时&#xff0c;设置端口映射&#xff0c;则只有该映射端口起作用&#xff0c;nginx配置的其他端口无效 监听端口 server {listen 8082;server_name ip地址;} server {listen 8083;server_name ip地址;}docker运行命令 docker run --name n…

探索人工智能的发展与影响

人工智能&#xff08;AI&#xff09;的快速发展正在深刻地改变着我们的生活和社会。从聊天机器人到自动驾驶汽车&#xff0c;AI的应用正日益广泛&#xff0c;为我们带来了前所未有的便利和创新。本文将深入探讨人工智能的发展历程、应用领域以及对社会的影响。 1. 人工智能的定…