Java 如何从另一个类读取变量?

Java 如何从另一个类读取变量?,java,android,Java,Android,我想知道如何将一个变量从一个类读入另一个类 我有两个类,triangle.java和screen.java 在triangle.java中,我有:public double-bound=0 如何在Screen.java中读取该变量 triangle.java: public class triangle extends Activity { public EditText txtbound; public double bound = 0; txtbound = (EditText)find

我想知道如何将一个变量从一个类读入另一个类

我有两个类,triangle.java和screen.java

在triangle.java中,我有:public double-bound=0

如何在Screen.java中读取该变量

triangle.java:

public class triangle extends Activity
{

public EditText txtbound;
public double bound = 0;

txtbound = (EditText)findViewById(R.id.txtbound);

public double calculate()
{
    bound=Double.parseDouble(txtbound.getText().toString());

    // do maths here

}
}
而Screen.java有:

double bound1 = triangle.bound;   

这不起作用,如何在Screen.java中获取变量?谢谢

triangle.java中的dopublic static double-bound=0

然后导入triangle.java之后,
您可以在screen.java或其他任何东西中执行
double bound1=triangle.bound

private double bound1; //do not initialize fields here
像屏幕一样使用getter/setter

    public double getBound() {
      return bound1;
    }

    public void setBound(double bound1) {
        this.bound1 = bound1;
    }
在屏幕的三角形获取实例中:

Screen scr = new Screen();
scr.setBound(this.bound); --> this way the bound1 in Screen will have the value of bound from Triangle
用大写字母开始命名班级是一种惯例。 在声明类字段时,也不必初始化它们。更好 为此使用构造函数。
我建议您阅读本文,以便更熟悉类、字段和变量。从长远来看,将节省您的时间。

您只能通过创建另一个类的对象来访问该类的属性,如

double bound1 = new Triangle().bound; 
或者,您需要将变量设置为静态,以便该变量不需要像这样的对象实例

public static double bound = 0;
和使用一样

double bound1 = Triangle.bound; 
我之前没有注意到,但是您的类扩展了activity类,在这种情况下使用静态方法。不应使用“新建”创建活动实例

在活动之间分享价值观, 您可以扩展应用程序类。并在那里添加您的属性。 您可以使用以下命令访问该类的实例

MyApplication appContext = (MyApplication)getApplicationContext();
double bound1 = appContext.bound;
这是一个单例,因此它将始终返回相同的实例。 要实现这一点,您需要将其添加到清单文件的应用程序标记中

android:name=".MyApplication"

如果没有类triangle的实例,则无法获取triangle.bound的值。但由于它是一个活动,您可能需要将绑定设置为静态

public static double bound = 0;
但一个好的做法是在另一个类(不是活动)中使bound成为静态变量,并从中设置/获取其值

public class MyClass
{
    public static double bound = 0;
}

然后在triangle类中设置它的值,并在Screen中使用它。java

java惯例会说您需要一个getBind()方法来返回实例的值


如果静态变量是类级变量,并且所有实例都可以共享相同的值,那么使用静态变量是可以的,但在这种情况下,我很可能会提供一个普通的getter。

这是因为“绑定”将是一个类变量而不是实例变量,以获取更多信息