2013-09-21 89 views
0

可以說我有classA和classB。是否可以從另一個類訪問非靜態類的實例

我知道我不能從classB中調用非靜態變量或classA方法,因爲系統不知道我想使用哪個classA實例。但有沒有辦法指定哪個實例?

是這樣的:類AI宣佈哪些對子級保持某種形式的ID或上下文中對類的具體實例的靜態變量

class classA{ 
    static Instance instance 

    onCreate(){ 
    instance = thisInstance(); 
    } 

    Method1(){ 
    } 
} 

然後在此類BI將引用該實例這樣的:

ClassA.instance.method1(); 

是這樣的可能嗎?如果是這樣,確切的語法是什麼?

[附加]:如果不是,最簡單的方法是從另一個類調用一個類的方法是什麼?我假設需要某種事件處理。 (我來自嵌入式C世界)

+2

獲取對其他對象的引用並調用它的方法?您可能需要退後一步,查看一些Java基礎知識。 –

+0

你可能只想使用'Singleton'模式 – Adassko

+0

我第二@DaveNewton –

回答

1

在ClassA的

public class ClassA { 
    public static ClassA object = new ClassA(); 

    public void doStuff() { 
     // do stuff 
    } 
} 

在ClassB的

public void someMethod() { 
    ClassA.object.doStuff(); 
} 
+0

沒有這不是我想要做的,我想調用classA中定義的方法,而不是內置的方法,如toString 。 – Siavash

+0

我根據你的評論編輯了我的答案 – cmd

+0

這也行不通,我想引用通過啓動應用程序創建的classA,而不是任何classA的任意副本。我的情況是ClassA是我的主要活動。 – Siavash

0

在B類聲明靜態成員,那麼,你可以定義:

Class B { 
    private static ClassA instanceA = null; // By making it null, you can later confirm that the instance was successfully passed by making sure instanceA != null. 

    /** 
    * This method allows you to pass the instance of ClassA into B so you can use its non-static methods. 
    */ 
    public static void setInstanceA(ClassA instance) { 
    instanceA = instance; 
    } 
} 
相關問題