class A{ void Method(){ //do sth. }}對于上面這個類,我如何知道 調(diào)用method 方法的 對象是哪個???如 我創(chuàng)建了兩個對象A a1=new A();a1.Method();A a2=new A();a2.Method();我在Method方法里如何知道是a1調(diào)用的 還是a2調(diào)用的呢?也就是說 ,我想在Method里面 獲取 調(diào)用該方法的實(shí)例對象,不知道各位看管聽明白了沒
2 回答

慕哥9229398
TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個贊
你可以在方法體里用this獲取到當(dāng)前對象,但是你無法獲取到當(dāng)前對象的“變量名”。舉個例子很容易明白:
class A { public void Method() { //this 代表當(dāng)前實(shí)例 } }
在Method()中,this代表當(dāng)前實(shí)例,當(dāng)前實(shí)例是堆上的一個唯一的對象,而在棧上可能有99個變量都指向這個對象。
A a1 = new A(); A a2 = a1; A a3 = a1; A a4 = a1; ... A a99 = a1; a99.Method();
無論是哪個變量調(diào)用Method方法,它們指向的堆上的同一個實(shí)例,因此對于Method來說,它們沒有不同,因此在Method中的this也沒有不同。再從另外一方面來反證,假設(shè)你可以輸出變量名,那么請問這句的輸出是什么:
new A().Method();
- 2 回答
- 0 關(guān)注
- 636 瀏覽
添加回答
舉報
0/150
提交
取消