簡體   English   中英

Java子類中的共享變量

[英]Shared variables within subclasses in java

我目前有一個包含兩個子類的父類,而我本質上想要做的是讓它們都繼承一個共享變量(一個浮點數)。 我需要在subclass1中設置float的值,然后在subclass2中使用float的值。 我應該補充一點,這些都是android活動,並且subclass1在活動鏈的開頭,subclass2在該活動鏈的結尾,之間的所有活動也是同一父類的子級。

我目前擁有的東西類似於以下內容:(我遺漏了很多其他代碼,這僅僅是白手起家)

class activityParent extends Activity{
    public static float value;

    public void setValue(){

        //grab the value from phone (ill leave this code out and will hardcode a value below as an example)
        value = 0.6f;
    }

    public void useValue(){
        //where i use the value in another function here
        otherFuncion(value);
    }

}

class subclass1 extends activityParent 
{
    @Override 
    public void onCreate(Bundle bundle){
         setValue();//need this to be initialized first
         super.onCreate(bundle);

    }
}

class subclass2 extends activityParent{
    //some previous code here
    //i need to use the value just before the activity finishes
    useValue();
    finish();

}

該float值從未在其他任何地方使用。

這種方法似乎是錯誤的,我知道,但是我不確定如何正確實施。

我當時在考慮通過意圖傳遞數據,但是正如前面提到的兩個子類arent彼此直接聯系,它們之間存在一系列活動,我寧願不必為了最終而將數據串接在一起。

下面的鏈接中討論了常見問題。

如何在單個應用程序中的活動/服務之間傳遞數據?

理想情況下,由於要共享原始數據類型(浮點型),因此建議使用Intent 但是,由於這與您的要求不太吻合,因此可以跳過此步驟。

接下來,使用“靜態”(當前正在執行)也可以。 您可以從應用程序中的任何其他類訪問這些靜態字段。

但是,如果您要使用其他方法,則可以使用“ Singleton”類。 這是一個僅設計有一個實例的類。

public  class Singleton {
    private static  Singleton INSTANCE ;

    private Singleton() {}

    public static synchronized Singleton getInstance() {
        if(INSTANCE == null){
            INSTANCE = new Singleton();
        }
        return INSTANCE;

    }
}

它具有一個靜態方法,該方法具有返回實例的名稱,例如getInstance()。 第一次調用此方法時,它將創建全局實例。

例如,活動subclass1可以檢索實例並調用setValue(0.6); 以后的活動子類2可以檢索實例並調用getValue()以檢索最后的設置值。

小心級聯的課程。 SubClass1onCreate()調用super.onCreate() ,它是ActivityParentonCreate() 這可能會觸發連鎖反應(調用ActivityParent的意圖仍可用於onCreate() )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM