你可以,但你不应该。
不应该部分:
你不应该这样做,因为以这种方式使用预处理器被认为是不好的做法,并且有更好,更像Java的方法来解决这个用例。
罐部分:(*)
Java本身不支持宏。另一方面,您可以通过C预处理器(简称CPP)通过管道传输源代码,就像C/C++编译链一样。
下面是一个演示:
来源/测试.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预处理方法一次!我正在为一门课程创建编程作业。我希望能够轻松地从参考解决方案中提取代码框架。所以我只是用了几个s来过滤掉解决方案的“秘密”部分。这样,我就可以维护参考解决方案,并轻松重新生成代码框架。#ifdef
这篇文章已经重写为一篇文章在这里。
(*)因为我讨厌用“你不应该”来回答问题。此外,一些未来的读者可能有充分的理由想要将cpp
与Java源代码结合使用!