String activityState = "resume";
DebugLog(activityState)
void DebugLog(String obj1) {}
如何使 DebugLog
像这样打印:
activityState : resume
我曾经在调试的时候在很多地方写了很多打印语句作为日志。我会写这样的语句
System.out.println("activityState : " + activityState);
我想要一个打印变量名和变量值的方法。在 C++ 中,它可以像下面这样完成:
#define dbg(x) cout<< #x <<" --> " << x << endl ;
有什么办法吗?
提前致谢。
最佳答案
没有直接的解决方案来获取变量名。
但是,在您有很多字段并且不想手动打印它们的状态的上下文中,您可以使用反射。
这是一个简单的例子:
class MyPojo {
public static void main(String[] args) {
System.out.println(new MyPojo());
}
int i = 1;
String s = "foo";
@Override
public String toString() {
StringBuilder result = new StringBuilder();
for (Field f: getClass().getDeclaredFields()) {
try {
result
.append(f.getName())
.append(" : ")
.append(f.get(this))
.append(System.getProperty("line.separator"));
}
catch (IllegalStateException ise) {
result
.append(f.getName())
.append(" : ")
.append("[cannot retrieve value]")
.append(System.getProperty("line.separator"));
}
// nope
catch (IllegalAccessException iae) {}
}
return result.toString();
}
}
输出
i : 1
s : foo
关于java - java打印变量名和变量值的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25077000/