[英]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()以檢索最后的設置值。
小心級聯的課程。 SubClass1
的onCreate()
調用super.onCreate()
,它是ActivityParent
的onCreate()
。 這可能會觸發連鎖反應(調用ActivityParent
的意圖仍可用於onCreate()
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.