在Java中,以下代码将与C++代码相同:
#define printVar(var) cout<<#var<<"="<<var;
打印字符串的值及其名称。
System.out.println(String.valueOf(var));
通过Java反射,您可以从变量中获取更多信息,例如类名、包名、类属性等...在Java中没有预处理器指令,所以在这种情况下,除了使用IDE的快捷方式(通常是“soutv + tab”,例如在InteliJ IDEA和Netbeans中可用),没有其他选择。因此,您将获得默认模板的输出:
System.out.println("var = " + var);
或者你可以实现以下通用方法:
void printVariable (Object variable, String name) {
System.out.println (name + " = " + variable);
}
并以以下方式运行:
printVariable (var, "var");
printVariable (anotherVar, "anotherVar");
更新:根据此答案,在Java 8中可能有一种方法通过反射来实现(在某些情况下)
Java没有标准的预处理器来实现这个功能,一般来说这是一件好事。在这种情况下,您可以使用自己的预处理器。
我建议您使用IDE中的调试器来调试程序,这样就避免了编写代码将调试语句转储到控制台的需要。注意:在Java中,使您的代码始终可调试的代价很小,大多数代码都会启用调试模式。
如果您断点某一行,您可以看到所有本地变量的值以及它们所指向的任何对象。您还可以深入堆栈并查看所有调用者(如果需要)。
public static void printVar(String var) {
System.out.print("var=", var);
}