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


以上是Java记录和每个文件的单个类限制的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>