我想做一个日志方法来帮助处理变量及其值,我想做类似的事情:
void log(Object object) {
android.util.Log.d("TAG", "The variable " + <One way to get object name here> + " has the value " + object);
}
当我运行这样的事情时:
int hits = 12;
Object obj = null;
String s = "nhe nhe nhem";
log(hits);
log(obje);
log(s);
我想获得以下输出:
The variable hits has the value 12
The variable obj has the value null
The variable s has the value nhe nhe nhem
我只需要一种方法来获取变量名称,我不知道java中的任何类似内容,但是如果有人知道一种方法可以做到....
修改
我在python中做了一个很好的例子:
myVariableWithSomeFooName = 32
for key, value in list(locals().iteritems()):
if id(value) == id(myVariableWithSomeFooName):
itemName = key
print "The " + str(itemName) + " has the value " + str(myVariableWithSomeFooName)
答案 0 :(得分:0)
对象变量实际上只是指向真实对象的指针,因此变量名通常只是被编译为一些难以理解的混乱。
在我的脑海中,您可以采取两种方法,一种是修改每个对象,您必须拥有另一个包含变量名称的String字段,然后可以在您的方法中调用getter方法。
另一种(可能更好)方法可能是将所有变量存储在HashMap中&lt;对象,字符串&gt;。在此数据结构中,对象与字符串配对。因此,您可以使用与其变量名称相同的字符串将所有对象添加到此HashMap中,然后在您的其他方法中调用hashmap的get(Object key)方法以查找与每个对象一起使用的字符串。
答案 1 :(得分:0)
将方法修改为:
void log(String varName, Object object) {
android.util.Log.d("TAG", "The variable " + varName + " has the value " + object);
}
并在调用时发送变量名称
int hits = 12;
Object obj = null;
String s = "nhe nhe nhem";
log("hits", hits);
log("obje", obje);
log("s", s);