3

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

例如:

class_name obj = new class_name();

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

4

5 回答 5

8

这不能直接在Java中完成。变量只是为程序员提供方便,甚至在您的代码编译后也不会被跟踪。您可以改为使用Map将字符串标识符映射到其对应对象的 a 。或者您可以name向包含字符串的类添加一个字段("obj"在您的示例中):

ClassName obj = new ClassName("obj");

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

(请注意,我假设了一个更标准的命名约定。)

于 2013-08-26T16:54:44.253 回答
0

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

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

至于你的具体问题,是做不到的。

于 2013-08-26T16:57:29.240 回答
0

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

于 2013-08-26T16:59:01.427 回答
0

如果您想访问局部变量并且如果源代码编译时带有javac -g保留调试信息的选项,则可以使用ASM 之类的字节码库来检索此详细信息。4.3。调试

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

如果要检索类级别 /Field 变量的名称,可以使用java 反射 API

于 2013-08-26T17:17:30.597 回答
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");
  }
}

我相信这是正确的做法..!!

您可以在这里查看更多详细信息

于 2013-08-26T17:16:05.827 回答