如何将对象的名称与Java中的字符串进行比较?
例如:
class_name obj = new class_name();
我想将对象名称obj
与字符串进行比较。这样做的正确方法是什么?
如何将对象的名称与Java中的字符串进行比较?
例如:
class_name obj = new class_name();
我想将对象名称obj
与字符串进行比较。这样做的正确方法是什么?
这不能直接在Java中完成。变量名只是为程序员提供方便,甚至在您的代码编译后也不会被跟踪。您可以改为使用Map
将字符串标识符映射到其对应对象的 a 。或者您可以name
向包含字符串的类添加一个字段("obj"
在您的示例中):
ClassName obj = new ClassName("obj");
if (obj.getName().equals(...))
...
(请注意,我假设了一个更标准的命名约定。)
==
比较对象引用。它找出两个操作数是否指向同一个对象。
如果要检查两个字符串是否包含相同的字符,则需要使用equals
.
至于你的具体问题,是做不到的。
您可以通过调用obj.getClass()
. 您无法通过正常方式获取对象的变量名。
如果您想访问局部变量并且如果源代码编译时带有javac -g
保留调试信息的选项,则可以使用ASM 之类的字节码库来检索此详细信息。见 4.3。调试
使用 javac -g 编译的类包含其源文件的名称、源代码行号和字节码指令之间的映射,以及源代码中的局部变量名和字节码中的局部变量槽之间的映射。此可选信息在可用时用于调试器和异常堆栈跟踪
如果要检索类级别 /Field 变量的名称,可以使用java 反射 API。
您可以使用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");
}
}
我相信这是正确的做法..!!
您可以在这里查看更多详细信息