2013-03-05 39 views
-1

我首先知道這一定很簡單,我一直試圖在這裏閱讀類似的問題,在Stackoverflow.com和谷歌上,但我仍然無法讓我的程序工作。如何使用'this'作爲另一個對象的參數?

我趕緊寫了什麼我的程序試圖做一個摘要:

public class One{ 

    public One(){ 
     Two t = new Two(this); 
    } 

    public void doSomething(){ 
     sout("HERE"); 
    } 

    public static void main(String[] args){ 
     One o = new One() 
     Two t = new Two(o); 
    } 

} 

    public class Two{ 

     public Two(One o){ 
      One o = o; 
      o.doSomething(); 
     } 
    } 

當我運行程序時,我得到一個NullPointerException異常,從方法調用o.doSomething()。我一直試圖解決它,但我很難過。如果有人能夠迅速告訴我修復它將不勝感激。

+3

「doSomething」中的NPE的實際行是什麼? – 2013-03-05 20:17:39

+0

'sout'是什麼? – 2013-03-05 20:18:22

+0

@BrendanLong一個IntelliJ快捷鍵:p – LuckyLuke 2013-03-05 20:18:51

回答

0

方法sout("HERE")不存在。如果您嘗試打印某些內容以進行控制檯操作,則應使用System.out.println("HERE")

+0

作爲評論指出,這可能是特定IDE的捷徑。 – arshajii 2013-03-05 20:20:23

5
One o = o; 

我不知道這意味着什麼,但它不會工作。這應該是一個成員變量(this.o)?要做到這一點,把它的類,而不是功能:

public class Two{ 
    private One o; 

    public Two(One o){ 
     this.o = o; 
     o.doSomething(); 
    } 
} 

,或者完全刪除它,如果你不需要它:

public class Two{ 
    public Two(One o){ 
     o.doSomething(); 
    } 
} 
0

我已經修改了你的類請我認爲這應該工作

公共類一{

public One(){ 
    Two t = new Two(this); 
} 

public void doSomething(){ 
    System.out.println("HERE"); 
} 

public static void main(String[] args){ 
    One o = new One(); 
    Two t = new Two(o); 
} 

}

public class Two{ 

    public Two(One one){ 
     One o = one; //just changed the parameter name to one 
     o.doSomething(); 
    } 
} 
0

「this」字用於引用當前對象;另外當你想訪問當前對象的變量「something」時,你可以使用「this.something」。

import java.io.*; 


public class One{ 
    public One(){ 
     Two t = new Two(this); 
    } 

    public void doSomething(){ 
     System.out.println("HERE"); 
    } 

    public static void main(String[] args){ 
     One o = new One(); 
     Two t = new Two(o); 
    } 
} 


public class Two{ 
    One o; 

    public Two(One o){ 
     this.o = o; 
     this.o.doSomething(); 
    } 
} 

這將編譯生成:

例如,你可以在你的代碼從「O」(輸入參數)區分「this.o」(對象的屬性)插入輸出:

這裏
這裏

這是你想要的嗎?

+0

我在5分鐘前完成了這個程序,這正是我得到的。在我的實際程序中,我將它傳遞給了一個線程。我現在要調試它,在我想要發送的對象中添加toString方法,並在該線程中添加System.Out對象。 – 2013-03-05 20:46:15

相關問題