繁体   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