[英]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.