java中子类中的共享变量

时间:2015-01-26 00:44:43

标签: java android inheritance subclassing

我目前有一个父类,它有两个子类,我基本上想要做的是让它们都继承一个共享变量(一个浮点数)。我需要在subclass1中设置float的值,然后在subclass2中使用float的值。我应该补充一点,这些都是android活动,并且子类1位于一系列活动的开头,而子类2位于此链的末尾,其间的所有活动也是同一父类的子项。

我目前拥有的内容类似于以下内容: (我已经留下了很多其他代码,这只是一块骨头)

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();

}

浮动值永远不会在其他任何地方使用。

这种做法似乎错了,我知道,但我不确定如何正确实施这一点。

我正在考虑使用意图传递数据但是如上所述,这两个子类并不直接相互接触,它们之间有一系列活动,而不是必须将这些数据通过它们串起来只是为了到达终点。

2 个答案:

答案 0 :(得分:0)

以下链接中讨论了常见问题解答。

How do I pass data between Activities/Services within a single application?

理想情况下,由于您要共享原始数据类型(浮动),建议使用意图。但由于这不符合您的要求,您可以跳过这个。

接下来,使用“static”(你当前正在做的)也没关系。您可以从应用程序中的任何其他类访问这些静态字段。

但是,如果你想要一个替代,那么可以使用“Singleton”类。这是一个只有一个实例的类。

public  class Singleton {
    private static  Singleton INSTANCE ;

    private Singleton() {}

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

    }
}

它有一个静态方法,其名称如getInstance()可返回实例;第一次调用此方法时,它会创建全局实例。

例如,活动子类1可以检索实例并调用setValue(0.6);稍后的活动子类2可以检索实例并调用getValue()来检索最后一个设置值。

答案 1 :(得分:0)

对一系列课程要非常小心。 onCreate() SubClass1的{​​{1}}调用super.onCreate()onCreate() ActivityParent。这可能会引发连锁反应(ActivityParent仍然可以使用onCreate()的意图。