同一.java文件中有多条记录

同一.java文件中有多条记录,java,class,java-record,java-16,Java,Class,Java Record,Java 16,在一个.java文件中,我们总是可以有多个类。考虑到封装和每个类都由多行代码组成,拥有一个类总是有意义的,不要谈论1.java文件中的嵌套类 现在,记录开始发挥作用,它们只需一行代码。在同一个.java类中封装多个记录有意义吗 例如,我们可以 将包含以下内容的DTO.java文件 record Employees(List<Employee> employees) { } //This is just a wrapper class that we normally need in

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

现在,记录开始发挥作用,它们只需一行代码。在同一个.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) { }
如果没有记录具有公共访问修饰符,则允许我们将所有记录都包含在名为DTO.java的文件中

在我看来,3.java文件中每个文件中只有一行代码似乎不是很好


然而,我们仍然可以面对这里描述的这些问题

没有改变的事实是:

在一个.java文件中不能有多个公共类。但是,您可以在同一个.java文件中拥有任意数量的非公共类。 .java文件的名称必须与其中的公共类相同。 如果.java文件中没有一个类是公共的,那么它可以有任何名称。 注意:由于您在问题中提到了另一个答案,我在演示中也包括了这些类,以防它们有助于加入这些点

Attribute.java:

Foo.java:

终端命令:


没有改变的事实是:

在一个.java文件中不能有多个公共类。但是,您可以在同一个.java文件中拥有任意数量的非公共类。 .java文件的名称必须与其中的公共类相同。 如果.java文件中没有一个类是公共的,那么它可以有任何名称。 注意:由于您在问题中提到了另一个答案,我在演示中也包括了这些类,以防它们有助于加入这些点

Attribute.java:

Foo.java:

终端命令:


4.如果编译器/生成工具或IDE不知道在何处搜索特定类,而其名称决定文件名的类尚未被引用,则可能会出现问题4。如果编译器/生成工具或IDE不知道在何处搜索特定类,而其名称决定文件名的类尚未被引用,则可能会遇到问题
import java.util.List;

public record Attribute(String name, String value) { }
record Employee(String name, Integer age, List<Attribute> attributes){ }
record Employees(List<Employee> employees) { }
public class Bar {
    
}
class Baz {
    public void hello(){
        System.out.println("Hello");
    }
}
import java.util.List;

public class Foo {
    public static void main(String[] args) {
        Attribute attr1 = new Attribute("A", "X");
        Attribute attr2 = new Attribute("B", "Y");
        System.out.println(attr1);

        Employee e1 = new Employee("James", 23, List.of(attr1, attr2));
        System.out.println(e1);
        Employee e2 = new Employee("Boug", 21, List.of(attr2));

        Employees emps = new Employees(List.of(e1, e2));
        System.out.println(emps);

        Baz baz = new Baz();
        baz.hello();
    }
}
[~/Desktop/Record]: javac Bar.java
[~/Desktop/Record]: javac Attribute.java 
[~/Desktop/Record]: javac Foo.java 
[~/Desktop/Record]: java Foo
Attribute[name=A, value=X]
Employee[name=James, age=23, attributes=[Attribute[name=A, value=X], Attribute[name=B, value=Y]]]
Employees[employees=[Employee[name=James, age=23, attributes=[Attribute[name=A, value=X], Attribute[name=B, value=Y]]], Employee[name=Boug, age=21, attributes=[Attribute[name=B, value=Y]]]]]
Hello