标签: java-record

同一个 .java 文件中的多条记录

我们总是可以在一个 .java 文件中有多个类。考虑到封装以及每个类都由多行代码组成,在 1 个 .java 文件中包含 1 个类(不要谈论嵌套类)总是有意义的。

现在记录开始发挥作用,它们可以少至 1 行代码。在同一个 .java 类中封装多个记录是否有意义?

例如我们可以有

DTO.java文件将包含

record Employees(List<Employee> employees) { }  //This is just a wrapper class that we normally need in order to return a list of objects in rest web services
record Employee(String name, Integer age, List<Attribute> attributes){ }
record Attribute(String name, String value) { }
Run Code Online (Sandbox Code Playgroud)

如果没有记录具有公共访问修饰符,那么我们可以将所有记录包含在名为DTO.java的文件中

在我看来,拥有 3 个 .java 文件,每个文件中只有 1 行代码似乎不太好。

但是,我们仍然会面临类似这里描述的问题,即同一 java 文件中的多个类

java class java-record java-16

0
推荐指数
3
解决办法
158
查看次数

在 Java 14 中写入 Record 字段

通过对 Java 14 中 Records 的介绍的简短搜索,我看到 Record 字段被编译为最终实例变量。这似乎意味着我不能写入 Record 字段......也没有任何教程提到关于写入 Record 字段的任何内容。

这是为什么?为什么我不能像在 C 中使用结构一样在 Java 14 中使用 Record ?

感谢您的任何见解

java java-14 java-record

-1
推荐指数
1
解决办法
215
查看次数

Java 中记录与类的 hashCode() 和 equals() 的默认实现

尝试使用示例代码来检查recordequals()classhashCode()的默认行为,但与class相比,记录的行为似乎有所不同。

这是记录的代码示例

public class EqualsAndHashcode {
    public static void main(String[] args) {
        var employeeA = new Employee(101);
        var employeeB = new Employee(101);
        var employeeAClass = new EmployeeClass(102);
        var employeeBClass = new EmployeeClass(102);
        var printStream = System.out;
        printStream.println("record equals: " + employeeA.equals(employeeB) + "\nhashcode objA: " + employeeA.hashCode() + "\nhashcode objB: " + employeeB.hashCode());
        printStream.println("\nclass equals: " + employeeAClass.equals(employeeBClass) + "\nhashcode objA: " + employeeAClass.hashCode() + "\nhashcode objB: …
Run Code Online (Sandbox Code Playgroud)

java equals hashcode java-record java-17

-1
推荐指数
1
解决办法
4402
查看次数

如何让 Java 19 识别“record”关键字

我正在使用 jdk 19,想为我的 Java 项目制作一个记录类。

JDK 19

当我声明 Person 类时:

public record Person (String name) {}
Run Code Online (Sandbox Code Playgroud)

我收到错误

预期为“类”或“接口”

我不明白为什么它不允许我使用 record 关键字。

任何帮助表示赞赏

java java-record

-2
推荐指数
1
解决办法
989
查看次数

Java 记录数据类型不适用于网络通信

我认为 Java 14 中新的 Java Record 数据类型应该适用于跨网络的数据,因为数据不应该在过程中发生变化,这是记录数据类型的主要特征 - 不可变。

我使用 RSocket 中的数据类型。在发送方,编码器出现错误。我还没有找到编码器是关于什么的。在接收器端,出现解串器错误。据我所知,记录不能实现诸如 Serializable 之类的接口。

所以,记录数据类型不适用于网络编程,对吗?

更新:

我将 Serializable 接口添加到发送方和接收方的记录定义中。发出请求后,TCP发送端没问题,但接收端报错

No encoder for com.....data.Notification, current value type is class com.....data.Notification
Run Code Online (Sandbox Code Playgroud)

那些标记这个问题的人有不同的经历吗?

java java-14 java-record

-5
推荐指数
1
解决办法
119
查看次数

标签 统计

java ×5

java-record ×5

java-14 ×2

class ×1

equals ×1

hashcode ×1

java-16 ×1

java-17 ×1