java - getter 返回 null

标签 java android null encapsulation

我知道为什么会出现我的问题,但我不确定如何处理它。

所以我有 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/

相关文章:

java - 如何确定正在运行的 JVM 上的 MaxDirectMemorySize?

java - 最大化窗口时刷新 Vaadin TabSheet

sql-server - SQL在日期之间选择,但在开始和结束日期为空时显示所有

java - 如何只插入连接表而不插入 JPA Hibernate 中的引用表

Java XML-RPC 和原始类型

java - 为什么原生 libmpg123 在带有 libgdx 的 Android 上花费这么长时间?

java - 获取解雇通知 ID

android - 更改运行时权限的语言

java - 如何调试为什么Java消息输出总是为空?

scala - 这在 Scala 中可以为 null 吗?