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();
- 2 回答
- 0 关注
- 535 浏览
添加回答
举报
0/150
提交
取消