如果在C / C ++中我们使用#define,那么在Java中呢?

时间:2015-06-04 03:41:12

标签: java

好的,如果我没有弄错,在C或C ++中我们使用下面的代码来缩短或替换该语句到另一个语句。那么你可以写P而不是printf作为命令吗?

#define P printf

然后我们如何在Java中做到这一点?

3 个答案:

答案 0 :(得分:4)

Java没有宏或预处理步骤。
必须认识到,每种编程语言都有自己的工具集。
很多时候使用MACROS可以使用C ++模板或Java泛型,例如在MAX宏的情况下。
如果你真的想要一个预处理状态,你应该考虑向你的构建系统插入一个步骤(即 - maven插件),它将覆盖你的“带有宏的Java代码”,从中生成真正的Java文件(类似于内联方式)函数在C ++中表现,然后编译生成的java代码。
您可以找到它的示例,例如,如果从XSD或其他模式生成Java代码,理论上,为什么不从“带有宏代码的Java”生成它?
如果您在项目Lombok中查找示例,您将看到它们向Java引入了“属性”systax,但事实上它们只是引入了IDE插件(因此当您使用代码时,代码看起来不会“损坏”或“出错”代码与你最喜欢的IDE),他们介绍了mavan步骤/目标,所以你可以实际构建使用Lombok开发的东西。
也许你应该采用类似的方法,如果这对你来说至关重要(实际上在过去,在JDK 5之前,这就是在某些框架中使用“注释”的方式,但你应该有一个很好的理由在你的码)。

答案 1 :(得分:1)

Java没有像您枚举的语言那样的预处理器步骤(C宏语言由预处理器处理)。您可以创建static final函数,或者可以使用cpp预处理Java src(我不建议这样做,因为它不适用于标准工具)。另一个有点类似的替代方案(但只是在能够通过向本地命名空间添加符号来省略类名的意义上)可能是static import

import static java.lang.System.out;

// ...

out.println("Hello, World"); // <-- System.out.println

答案 2 :(得分:0)

java没有任何内部预处理器,但如果项目非常需要它(通常是移动项目需要对许多目标设备进行小代码修正),那么可以使用外部工具,有人甚至使用C / C ++预处理器进行预处理来源,我使用自己的java-comment-preprocessor,但无论如何,我所看到的所有java预处理器都不允许像C / C ++预处理器这样的技巧,因为java语言级别不支持预处理器指令