2015-09-24 63 views
1

我在想,如果這是一種錯誤的編程方式來移動軟件子類中的主要引用。Java移動主要類參考

它可能很難理解我真正的意思,所以我會做一個例子。

public class Main{ 
    public static void main(String[] args) { 
     Main app = new Main(); 
     Toto myToto = new Toto(); 
     myToto.something(app); 
    } 
} 
public class Toto{ 
    public void something(Main app){ 

    } 
} 
+7

那麼該代碼將無法編譯,因爲你沒有Main'的'一個實例 - 你不能在一個使用'this'靜態方法。但是'main'沒有什麼特別的魔力......你可以立即要求其他東西去做所有真正的工作,當然。 –

+0

「主要」課程並不存在真正的原因。您可以將任何類定義爲root/main類。 Main與其他班級一樣。但是,Jon Skeet已經提到你的代碼片段不會編譯 –

回答

1

「this」是一個非靜態變量,所以它不能從靜態方法中引用。 所以我們不能通過使用「this」關鍵字來調用something()。

嘗試下面的代碼,它工作正常

class Main{ 
    public static void main(String[] args) { 
     Toto myToto = new Toto(); 
    Main m= new Main(); 
     myToto.something(m); 
    } 
} 
class Toto{ 
    public void something(Main app){ 

    } 
} 
+0

我的錯我在代碼中犯了一個錯誤,它不是這個問題的答案。我的意思是知道這是否是一種糟糕的編程方式來引用Main。 –