#define 指令 Java

#define directive in Java

我正在寻找一种在 Java 中使用类似于 #define 的方法。我知道那里没有预处理器,但我怀疑无法实现类似的东西。理想情况下,我正在寻找一种在 Java 中翻译此 C++ 代码的方法:

#include <cstdio>
#define HelloWorld
#define BEGIN {
#define END }
#define PROGRAM int main()
#define WRITELN(a) puts(a);

PROGRAM HelloWorld

BEGIN
    WRITELN("Hello, World")
END

在这被标记为重复之前我想声明我正在寻找一种在编译之前定义字符串常量的方法,这个网站上有关于数字的问题,但这不是我的问题寻找。我显然需要再次解释这个问题有何不同。有人链接的问题的 OP 询问 Java 中的 #define 是否存在,答案是否定的。我要问的是如何声明在编译前计算的字符串常量。

而且我也知道它的用途是有限的,但是我不明白为什么 #define NAME Larry 中的某些东西没有用。

我想我明白你的意思了;您正在使用 #define 语句来定义您自己的 DSL;也就是说,您正在编写编译器转换为有效语法的特定语句。

那是......Java 不完全可能。原因是Java的编译方法相对固定。

可能有办法解决这个问题;代码的要点是它必须在某个层转换为有效的字节码。如果您的目的是获得类似 DSL 的语言,您可以考虑 Groovy or Kotlin,它允许更简洁的方式来表达最终将成为有效的 Java 字节码。