Java记录和每个文件的单个类限制
我正在尝试使用 java 14 的新记录功能,目前处于预览阶段。
我知道在 Java 中,每个文件必须有一个公共类,但是新的记录语法非常好且简短,让一堆文件中的每个文件都包含一行代码似乎很浪费。
特别是我想尝试为这样的简单 AST 建模,我认为将所有内容放在一个文件中确实提高了可读性和理解性。
package com.company;
public interface Expression {
}
public record IntExp(int value) implements Expression {
}
public record AddExp(Expression left, Expression right) implements Expression {
}
public record SubtractExp(Expression left, Expression right) implements Expression {
}
// Etc..
但不幸的是,这不会编译。
所以我的问题是:
有没有办法绕过这个限制,或者有什么方法可以将这样的代码全部保存在一个地方?
回答
一种明显的方法是将“预定义”记录类移动到接口中:
package com.company;
public interface Expression {
record IntExp(int value) implements Expression {
}
record AddExp(Expression left, Expression right) implements Expression {
}
record SubtractExp(Expression left, Expression right) implements Expression {
}
}