2017-04-03 58 views
-1

我已經閱讀了很多關於在java中使用關鍵字'this'的解釋,但仍然沒有完全理解它。我用它在這個例子:用Java中的關鍵字拼圖

private void login_BActionPerformed(java.awt.event.ActionEvent evt) {           
    if(user_TF.getText().equals("admin")&& pass_PF.getText().equals("admin")){ 
     this.B.setVisible(true); 
    }else{ 
     JOptionPane.showMessageDialog(null, "Warning!", "InfoBox: "+"Warning", JOptionPane.INFORMATION_MESSAGE); 
    } 
    this.user_TF.setText(""); 
    this.pass_PF.setText(""); 
}  

它應該打開一個新的窗口,如果用戶並通過匹配。我在這裏的任何地方使用「this」關鍵字嗎?

+1

***我是否在這個例子中使用它:***是一個問題?因爲我沒有看到任何*這個*這裏 –

+0

我編輯它,因此它顯示我認爲'this'可能被使用。 – mojic2D

+0

重複的http://stackoverflow.com/questions/2411270/when-should-i-use-this-in-a-class – Chris311

回答

1

我認爲有兩個主要用途,你應該知道

  • 如果你有一個名稱爲N類變量,並與名稱爲N的方法變量,然後對它們進行區分,使用this.N爲類變量,N爲方法變量。 Screenshot displaying possible usage
  • 想象一下,您有2個構造函數。一個採用字符串名稱,另一個採用名稱+年齡。代替重複代碼,只需使用this()調用另一個構造函數Another screenshot displaying the usage

在你的情況,我沒有看到名字'B'的任何LOCAL(方法)變量,所以我猜你可以沒有它。

0

該類的任何非靜態方法都需要調用該類的一個對象。類具有修改和閱讀狀態的狀態和行爲藍圖。對象是這個藍圖的實現。一旦創建了對象,它就具有這些狀態和方法。

假設您有以下代碼。

public class A{ 
    int property; 
    public void foo(){ 
     bar(); 
    } 

    public void bar(){ 
     property = 40; 
    } 
} 

public class B{ 
    public static void main(String[] args){ 
     A obj = new A(); 
     obj.foo(); 
    } 
} 

讓我們試着回答幾個問題。

Q1。在方法foo中我們調用bar,我們沒有使用任何明確的對象來調用它(使用.點運算符),在這個對象上調用方法bar

Q2。方法bar嘗試訪問並修改名爲property的變量。這個狀態稱爲property屬於哪個對象?

答案

A1。 對象A.this(與this相同)。這是調用foo方法的對象,該方法在隱式調用方法中可用。該方法執行的對象可以通過this訪問。

A2。與第一季度的回答相同。

任何時候都可以通過Classname.this訪問該對象在非靜態方法或類的塊中。