Android获取变量名称

时间:2014-11-28 17:10:54

标签: java android variables

我想做一个日志方法来帮助处理变量及其值,我想做类似的事情:

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)

2 个答案:

答案 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);