我知道为什么会出现我的问题,但我不确定如何处理它。
所以我有 3 个类,其中 1 个包含我的 getter 和 setter。在一个类中,我正在设置值,在另一个类中,我正在获取值。当我得到值时,它们返回 null。这显然是因为我在类中创建的 getter/setter 对象的两个实例是彼此分开的。我想找出的是如何在一个类中设置值并在另一个类中获取它们,而无需两个单独的 getter/setter 类实例。我的措辞很糟糕,所以这里有一个更直观的解释:
1 级
Encapsulation encap = new Encapsulation();
encap.setValue(10);
2 级
Encapsulation encap = new Encapsulation();
encap.getValue(); //I want this to return 10
3 级(封装)
private int value;
public void setValue(int value){
this.value = value;
}
public int getValue(){
return value
}
最佳答案
在 Class2 中,您正在创建类 Encapsulation 的新实例。 (注意新的封装())。很明显,这不会保持值(value)。
相反,我建议您采用两种解决方案:
首先:
在您处理 Android 应用程序时将该对象保存在 Application 类中。
public class TestApplication extends Application {
public Encapsulation tempClass;
public TestApplication () {
// TODO Auto-generated constructor stub
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
}
public Encapsulation getTempClass() {
return tempClass;
}
public void setTempClass(Encapsulation tempClass) {
this.tempClass = tempClass;
}
}
现在在您的 Activity 中:
//after setContentView
testAppObj = (TestApplication) getApplication();
testAppObj.setTempClass(myTempClassObj);
//retrieve as:
Encapsulation obj = testAppObj.getTempClass();
您必须像注册 Activity 一样在 list 文件中注册应用程序类:
<application
android:name="com.pkg.test.TestApplication " />
第二:
在 Class1 中将对象封装为静态。所以你可以从 calss2 访问它。 (我不喜欢静态。)
希望对您有所帮助。
关于java - getter 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26299388/