gpt4 book ai didi

java - java子类中的共享变量

转载 作者:行者123 更新时间:2023-12-05 00:07:04 26 4
gpt4 key购买 nike

我目前有一个父类,它有两个子类,我基本上想要做的是让它们都继承一个共享变量(一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com