如何在Java中进行字符串化

时间:2015-10-06 10:23:12

标签: java c++ string macros

在c ++中我们可以使用宏作为

#define check_and_log_warning(x) if (!(x)) {log_error(#x); cout<<__LINE__;}

我想获取布尔表达式的值,并将其用作字符串。 获取宏内的行号会增加收益。

像这样的宏可以用Java编写吗? 我最近从c / c ++转到java,所以我想知道在没有宏的情况下可以在c ++中完成这样的事情吗?

2 个答案:

答案 0 :(得分:2)

Java中没有宏设施。

您将使用日志框架(其中有很多可供选择)。

if (! theActualConditionNotJustX) myLogger.error("describe problem here");

日志记录后端(如果以这种方式配置)确保捕获并显示行号。这有一些运行时成本,但它通常是可以忽略的,特别是在涉及实际“错误”的情况下(跟踪级别日志记录可能会有点代价)。

答案 1 :(得分:2)

预处理器是我在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__不同,获取堆栈跟踪会导致性能下降。太好了:))