高分悬赏:Java语言根据变量的变量名判断两个变量是不是指向同一个变量怎么实现

高分悬赏:Java语言根据变量的变量名判断两个变量是不是指向同一个变量怎么实现

分情况讨论:
1、如果 Object类的equals方法和hashcode方法被重写:
如果obj1 == obj2 为真,则两者指向相同的内存地址。

2、如果 Object类的equals方法和hashcode方法没有被重写:
1. 如果obj1 == obj2 为真,则两者指向相同的内存地址。
2. 如果obj1.hashCode()== obj2.hashCode() 为真,则两者指向相同的内存地址。

如果是编译时的话,使用tools.jar包的语法分析包,得到语法分析树进行判断,不过有够呛;对于运行时,如果这两个变量都是Map中Key或者是对象的Member,可以通过反射获取变量的值进行比较;方法内的局部变量貌似应该不得行吧。。。。

可以直接用equals()接口,如果没有被重写,它是会比较两个变量的引用是否相同