如何从一个类中将值设置为变量并从其他类获取该变量的值?

时间:2018-01-05 14:28:01

标签: java android get set getter-setter

我想将数据设置为类的变量,并希望在另一个类中获取该变量的数据。

我测试了一个例子。但我得到零价值。

示例课程Data

public class Data {

    private String text;

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}

MainActivity课程中,我执行了设置:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Data data = new Data();
        data.setText("HELLO");
        System.out.println("GET from Main class: " + data.getText());

        // Call the get class method
        Test test = new Test();
        test.execute();
    }

测试类:

public class Test {

    public void execute() {

        Data data = new Data();
        System.out.println(" GET from Test class: " + data.getText());

    }

}

输出:

I/System.out: GET from Main class: HELLO
I/System.out:  GET from Test class: null

如何访问Main类get?

感谢。

3 个答案:

答案 0 :(得分:0)

它是null,因为您从Data创建新对象!如果要从Data获取值,则必须将Data对象传递给Test方法。

答案 1 :(得分:0)

您需要说数据变量是一个静态变量,这意味着它对于所有Data实例都是相同的。完成后,您不需要数据实例。

public class Data {
    private static String sText;

    public static String getText() {
        return sText;
    }

    public static void setText(String text) {
        sText = text;
    }
}

然后静态调用数据。 Data.getText()和Data.setText(“hello”)

编辑: 但正如Stultuske写的那样,你应该了解基础知识。我的“解决方案”将修复你的测试,但它不是一个好的测试,因为一旦你开始处理更大的应用程序,一切全局将导致一团糟。

答案 2 :(得分:0)

现在它的工作方式,execute()无法知道对象的价值,因为它是一个新的对象。你有两个解决方案:

  • 您可以将text变量放在static中:这样,该值将由所有实例共享。任何Data对象都可以更改text的值,您可以在不创建实例的情况下更改变量。

  • 您还可以在Data函数的参数内传递execute()对象。这样,您将创建的每个Data对象都将拥有自己的text变量。