将对象名称(引用名称)与字符串进行比较

时间:2013-08-26 16:53:15

标签: java

如何将对象名称与Java中的字符串进行比较?

例如:

class_name obj = new class_name();

我希望将对象名称obj与字符串进行比较。这样做的正确方法是什么?

5 个答案:

答案 0 :(得分:8)

这不能直接在Java中完成。变量名称仅仅是程序员的便利,在编译代码后甚至无法跟踪。您可以使用Map将字符串标识符映射到其对应的对象。或者,您可以在类中添加name字段,其中包含字符串(示例中为"obj"):

ClassName obj = new ClassName("obj");

if (obj.getName().equals(...))
    ...

(请注意,我采用了更标准的命名约定。)

答案 1 :(得分:0)

==比较对象引用。它会发现两个操作数是否指向同一个对象。

如果要检查两个字符串是否包含相同的字符,则需要使用equals比较字符串。

关于你的具体问题,不能这样做。

答案 2 :(得分:0)

您可以通过调用obj.getClass()来获取班级的班级名称。您无法通过常规方式获取对象的变量名称。

答案 3 :(得分:0)

您可以使用instanceof关键字

查看对象的类型

查看此示例以获取更多详细信息

public void checkType(Object param) {
  if( param instanceof String) {
    System.out.println("param is a String");
  }
  else if( param instanceof Integer) {
    System.out.println("param is an Integer");
  }
}

我认为这是正确的做法.. !!

您可以查看here了解更多详情

答案 4 :(得分:0)

如果要访问局部变量,并且如果使用javac -g选项编译源代码以保留调试信息,则Bytecode Library like ASM可用于检索此详细信息。见4.3. Debug

  

使用javac -g编译的类包含其源文件的名称,   源代码行和字节码指令之间的映射,以及   源代码中的局部变量名与本地变量之间的映射   字节码中的可变槽。此可选信息用于   调试器和异常堆栈跟踪可用时

如果要检索类级别/字段变量的名称,可以使用java reflection API