为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取调用方法的实例

如何获取调用方法的实例

拉丁的传说 2018-07-26 09:10:30
class A{  void Method(){    //do sth.  }}对于上面这个类,我如何知道 调用method 方法的 对象是哪个啊?如 我创建了两个对象A a1=new A();a1.Method();A a2=new  A();a2.Method();我在Method方法里如何知道是a1调用的 还是a2调用的呢?也就是说 ,我想在Method里面 获取 调用该方法的实例对象,不知道各位看管听明白了没
查看完整描述

2 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

你可以在方法体里用this获取到当前对象,但是你无法获取到当前对象的“变量名”。举个例子很容易明白:

class A
{
  public void Method()
   {
    //this 代表当前实例  }
}

在Method()中,this代表当前实例,当前实例是堆上的一个唯一的对象,而在栈上可能有99个变量都指向这个对象。

A a1 = new A();
A a2 = a1;
A a3 = a1;
A a4 = a1;
...
A a99 = a1;
a99.Method();

无论是哪个变量调用Method方法,它们指向的堆上的同一个实例,因此对于Method来说,它们没有不同,因此在Method中的this也没有不同。再从另外一方面来反证,假设你可以输出变量名,那么请问这句的输出是什么:

new A().Method();


查看完整回答
反对 回复 2018-07-30
  • 2 回答
  • 0 关注
  • 488 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信