在 C++ 中我们可以使用宏
#define check_and_log_warning(x) if (!(x)) {log_error(#x); cout<<__LINE__;}
我想获取 boolean 表达式的值并将其用作字符串。 在宏中获取行号将会带来额外的好处。
像这样的宏可以用 Java 编写吗? 我最近从 c/c++ 转向 java,所以我想知道这样的事情可以在没有宏的情况下在 c++ 中完成吗?
最佳答案
预处理器是我在 Java 中怀念 C/C++ 的东西。有很多方法...,但它们是 Java 方法。
1/断言: http://docs.oracle.com/javase/7/docs/technotes/guides/language/assert.html
2/日志: 我用的是https://commons.apache.org/proper/commons-logging/
(通过 log4J 或任何你想要的)
要打印日志消息中的行号,您可以使用以下命令:
int lineNo = Thread.currentThread().getStackTrace()[2].getLineNumber();
编辑:
请注意:与 C++ 中的 __LINE__
不同,获取堆栈跟踪会导致性能损失。友善点:)
关于java - 如何在Java中进行字符串化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32967557/