亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲取調用方法的實例

如何獲取調用方法的實例

拉丁的傳說 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 關注
  • 633 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號