如何在Java中进行字符串化

How to stringify in Java

本文关键字:字符串 Java      更新时间:2023-10-16

在c++中可以使用宏

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

我想得到一个布尔表达式的值,也使用它作为一个字符串。在宏中获取行号将会带来额外的好处。

像这样的宏可以用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中没有宏功能。

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

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

日志记录后端(如果这样配置的话)确保捕获并显示行号。这有一些运行时成本,但通常可以忽略不计,特别是在涉及实际"错误"的情况下(对于跟踪级别的日志记录来说,它可能会有点昂贵)。