微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决同一个 .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) { }

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

文件

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

但是,我们仍然会遇到这里描述的这些问题multiple classes inside same java file

解决方法

没有改变的事实是:

  1. 在一个 public 文件中不能有多个 .java 类。但是,您可以根据需要在同一个 public 文件中包含任意数量的非 .java 类。
  2. .java 文件的名称必须与其中的 public 类相同。
  3. 如果 .java 文件中的所有类都不是 public,则它可以有任何名称。

注意:由于您在问题中提到了另一个答案,因此我也将这些类包含在我的演示中,以防万一它们有助于加入点。

Attribute.java:

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) { }

Bar.java:

public class Bar {
    
}
class Baz {
    public void hello(){
        System.out.println("Hello");
    }
}

Foo.java:

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,value=Y]]],Employee[name=Boug,age=21,attributes=[Attribute[name=B,value=Y]]]]]
Hello

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。