如何在Java中进行字符串化
How to stringify in Java
在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");
日志记录后端(如果这样配置的话)确保捕获并显示行号。这有一些运行时成本,但通常可以忽略不计,特别是在涉及实际"错误"的情况下(对于跟踪级别的日志记录来说,它可能会有点昂贵)。
相关文章:
- 如何通过 JNI 将 C 字符串表情符号传递给 Java
- 如何将字符串数组返回到 java JNI
- 如何在 c++ 中读取用 utf-8 编码的 java unicode 字节字符串
- 如何从 C/C++ 在 JNI for Java 中创建 UTF16 字符串?
- Java 调用 dll 字符串返回类型方法
- C++和Java的字符串循环性能比较
- 任何C 字符串库,例如QString(或Java String)
- 如何将字符串数组从C++返回到Java(JNI)
- JNI - 如何填充从 C++ 传递到 Java 的字符串
- JNI将字符串从Java传递到C ,然后将C 字符串传递给字符串数组
- 将 C++ 中的字符值转换为具有与 Java 中相同值的字符串
- 从本机代码返回"const char*"并在java中获取"字符串"
- JNI 代码返回字符串,但得到错误 java.lang.UnsatisfiedLinkError: com.packag
- 从 c++ 库中获取一个字符串,周围有一个 java 包装器
- 触发Java Jar用C 运行并传递字符串
- 如何使用 2 个字符串参数从 jni java 库调用
- 字符串在从Android Java调用ndk c ++函数后会得到一个奇怪的形式
- Python,C ,C#和Java中的字符串比较之间的差异
- 通过字符串将wav数据从Java发送到Cpp
- jvm在尝试将TCHAR类型发送到接受字符串作为参数的java函数时崩溃