您 可以, 但 不可以 。
该 不该 部分:
您 不应该这样做,
因为以这种方式使用预处理器被认为是不好的开始,并且有更好且更多的Java惯用方式来解决此用例。
该 CAN 部分:(*)
Java本身不支持宏。另一方面,您可以像C / C ++编译链一样,通过
C预处理器 (简称CPP)传递源代码。
这是一个演示:
src/Test.java
:
#define READINT (new java.util.Scanner(System.in).nextInt())class Test { public static void main(String[] args) { int i = READINT; }}cpp
命令:
$ cpp -P src/Test.java preprocessed/Test.java
结果:
class Test { public static void main(String[] args) { int i = (new java.util.Scanner(System.in).nextInt()); }}编译:
$ javac preprocessed/Test.java
更好的解决方法:
您可以使用静态方法编写自己的实用工具类:
import java.util.Scanner;class StdinUtil { public final static Scanner STDIN = new Scanner(System.in); public static int readInt() { return STDIN.nextInt(); }}当您要使用它时,可以静态导入该
readInt方法:
import static StdinUtil.readInt;class Test { public static void main(String[] args) { int i = readInt(); }}(或
static import StdinUtil.STDIN;使用
STDIN.nextInt()。)
最后是轶事
我本人曾经在Java代码上使用过CPP预处理方法!我正在为课程创建编程作业。我希望能够轻松地从参考解决方案中提取代码框架。因此,我只用了几个
#ifdefs来过滤掉解决方案的“秘密”部分。这样,我可以维护参考解决方案,并轻松地重新生成代码框架。
这篇文章在这里已被重写为文章。
(*)因为我讨厌用“你不应该”回答问题。此外,将来的某些读者可能有充分的理由要
cpp结合使用Java和Java源码!



