有没有办法为给定的 Java 项目定义自定义语法?
例如,我想做的一件事是为标准的 getter 和 setter 创建一个简写语法(类似于 .NET 的“{ get; set; }”)。正如我一直在寻找的那样,我所遇到的只是编写一个 DSL 可能能够实现这一点,但是当我研究它们时,我不知道它们是否适合需要。
那么有没有办法像这样定义额外的句法元素呢?
由于其他人已经确定实际上不可能更改语法,因此您可能对Project Lombok感兴趣。
从入门指南:
private boolean employed = true;
private String name;
public boolean isEmployed() {
return employed;
}
public void setEmployed(final boolean employed) {
this.employed = employed;
}
protected void setName(final String name) {
this.name = name;
}
变成
@Getter @Setter private boolean employed = true;
@Setter(AccessLevel.PROTECTED) private String name;
没有内置的方法可以做到这一点。
Java 编译器使用Java 语言规范中定义的语法解析 Java 代码。
如果您想使用非 Java 语法编写可与 Java 编译器编译的程序,您将必须使用/创建一个工具,该工具可以将您的语法转换为有效的 Java(这种类型的转换属于通常提到的类别作为“预处理”)。
请记住,如果您确实创建了一个预处理器,它会在您需要维护和记录的事项列表中增加一件事,这对于大型/团队项目尤其重要。
不,你不能,至少在不使用外部工具的情况下不能。
这不是一个好主意。将来加入公司/项目的其他软件开发人员应该能够将源代码作为标准 java 读取。