Java 返回null的getter

Java 返回null的getter,java,android,null,encapsulation,Java,Android,Null,Encapsulation,我知道我的问题为什么会发生,但我不确定如何处理它 所以我有3个类,其中一个包含我的getter和setter。在一个类中,我设置值,在另一个类中,我获取值。当我得到这些值时,它们返回null。这显然是因为我在类中创建的getter/setter对象的两个实例彼此独立。我想知道的是如何在一个类中设置值,然后在另一个类中获取值,而不需要getter/setter类的两个单独实例。我的措辞很糟糕,所以这里有一个更直观的解释: 一级 Encapsulation encap = new Encapsula

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

所以我有3个类,其中一个包含我的getter和setter。在一个类中,我设置值,在另一个类中,我获取值。当我得到这些值时,它们返回null。这显然是因为我在类中创建的getter/setter对象的两个实例彼此独立。我想知道的是如何在一个类中设置值,然后在另一个类中获取值,而不需要getter/setter类的两个单独实例。我的措辞很糟糕,所以这里有一个更直观的解释:

一级

Encapsulation encap = new Encapsulation();
encap.setValue(10);
第2类

Encapsulation encap = new Encapsulation();
encap.getValue(); //I want this to return 10
第3类(封装)


在Class2中,您正在创建一个新的类封装实例。(注意新的封装()。很明显,这不符合价值观

相反,我建议您两种解决方案:

第一名:

在使用Android应用程序时,将该对象保存在应用程序类中

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;
    }
}
现在在您的活动中:

//after setContentView
testAppObj = (TestApplication) getApplication();
testAppObj.setTempClass(myTempClassObj);

//retrieve as:
Encapsulation obj = testAppObj.getTempClass();
必须在清单文件中注册应用程序类,就像注册活动一样:

<application
        android:name="com.pkg.test.TestApplication " />

秒:

在类1中将对象装箱保持为静态。因此,您可以从calss2访问它。(我不喜欢静电。)


希望有帮助。

在Class2中,您正在创建一个新的类封装实例。(注意新的封装()。很明显,这不符合价值观

相反,我建议您两种解决方案:

第一名:

在使用Android应用程序时,将该对象保存在应用程序类中

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;
    }
}
现在在您的活动中:

//after setContentView
testAppObj = (TestApplication) getApplication();
testAppObj.setTempClass(myTempClassObj);

//retrieve as:
Encapsulation obj = testAppObj.getTempClass();
必须在清单文件中注册应用程序类,就像注册活动一样:

<application
        android:name="com.pkg.test.TestApplication " />

秒:

在类1中将对象装箱保持为静态。因此,您可以从calss2访问它。(我不喜欢静电。)


希望它有帮助。

将值设为静态,它将在所有
封装
实例中保持相同的值

private static int value;

public void setValue(int aValue){
    value = aValue;
}

public int getValue(){
    return value;
}

将值设为静态,它将在所有
封装
实例中保持相同的值

private static int value;

public void setValue(int aValue){
    value = aValue;
}

public int getValue(){
    return value;
}

只需声明一次封装类的对象,并使用同一个实例调用getter和setter

像这样:

Encapsulation encap = new Encapsulation();
encap.setValue(10);
encap.getValue();

它可以工作。

只需声明一次封装类的对象,然后使用同一个实例调用getter和setter

像这样:

Encapsulation encap = new Encapsulation();
encap.setValue(10);
encap.getValue();

它可以工作。

为什么要在类2中创建新对象。您应该创建一个类。因此,您可以使用任何返回
int
的calssa函数中的值。当您再次创建新对象时,不能返回
null
,每个对象都有自己的内存区域。若要将对象传递给其他活动,则使用android的捆绑机制进行传递。按照以下步骤使用单个实例并获取值为什么在类2中创建新对象。您应该创建单个类。因此,您可以使用任何返回
int
的calssa函数中的值。当您再次创建新对象时,不能返回
null
,每个对象都有自己的内存区域。若要将对象传递给其他活动,则使用android的捆绑机制进行传递。遵循下面的“使用单个实例并获取值”您会看到这样的话:“在Class2中,您正在创建一个新的类封装实例。(注意new-enclosuration())。很明显,这不会保存值。”它们是天堂般的。在我看到这些神圣的话语之前,我大概有一个月的时间都无法前进。谢谢你的智慧,我的英雄>>>:)你会看到这样的话:“在Class2中,你正在创建一个新的类封装实例。(注意new-enclosure())。很明显,这不会包含值。”它们是天堂般的。在我看到这些神圣的话语之前,我大概有一个月的时间都无法前进。谢谢你的智慧,我的英雄>>>:)