java - java子类中的共享变量

标签 java android inheritance subclassing

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

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

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

}

该浮点值从未在其他任何地方使用。

这种方法似乎是错误的,我知道,但我不确定如何正确地实现它。

我正在考虑通过 Intent 传递数据,但正如所提到的,这两个子类彼此之间没有直接联系,它们之间存在一系列 Activity ,我宁愿不必将这些数据全部串起来以达到结束。

最佳答案

下面的链接中讨论了常见问题。

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

理想情况下,由于您要共享原始数据 类型( float ),建议使用Intent。但由于这不符合您的要求,您可以跳过此部分。

接下来,使用“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() 的静态方法,它返回实例;第一次调用此方法时,它会创建全局实例。

例如, Activity 子类 1 可能会检索实例并调用 setValue(0.6);稍后的 Activity 子类 2 可能会检索实例并调用 getValue() 以检索最后设置的值。

关于java - java子类中的共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28143338/

相关文章:

java - 查找错误 SIO_SUPERFLUOUS_INSTANCEOF

java - 应用程序在 Activity 之间切换时未运行

javascript - 为什么 scrollView 在我的代码中不能以垂直方式工作?

java - 为什么我会收到错误 : cannot find symbol variable in R class

c++ - 在 C++ 中通过子类访问父类(super class)的 protected 静态成员

Python 类继承 - 诡异的 Action

c++ - 从基类继承 operator new

java - 单击图像按钮项目自定义 ListView android时更改图像

Java缓存和平等

java - 需要抑制第二个重复字符串的 sops。