-2

我是 java 新手,正在尝试将以下示例中的变量从一个类传递到另一个类,我想知道这是否可能,如果是,我将如何处理。

由于此代码不起作用,因为它不是静态的。

主班

public class testAll
{
    public static void main(String[] args)
    {
        One one = new One();
        Two two = new Two();


    }
}

第一课:

public class One
{

    public int test = 4;

    public int getTest()
    {
        return this.test;

    }


}

第二类:

public class Two
{

    public void value()
    {
        System.out.print("Var is: " + One.getTest());

    }


}

谢谢,

纳兹

4

4 回答 4

2

让我们考虑一下,如果您想从 B 类访问 A 类中的变量,那么 A 类需要了解 B 类。

public class A {

    public A(B classB){
        this.classB = classB;
    }

    public void printValue(){
        System.out.println(this.classB.getTest());
    }
}

现在您需要在构造函数中将 ClassB 的实例传递给 ClassA,以便 Class A 在调用 printValue() 时具有对 ClassB 的引用;

ClassB b = new ClassB();
ClassA a = new ClassA(b);
b.getTest();
a.printValue();
于 2013-10-25T10:02:23.980 回答
1

您必须首先为 One 类创建一个实例。尝试这个

public void value()
{
    One one_object = new One();
    System.out.print("Var is: " + one_object.getTest());

}
于 2013-10-25T09:55:05.510 回答
1
public class Two {

    private One one;
    public Two(One one) {
        this.one = one;
    }

    public void printValue() {
        System.out.print("Var is: " + one.getTest());
    }
}

public class Main {
    public static void main(String [] args) {
        One one = new One();
        Two two = new Two(one);

        two.printValue();
    }
}
于 2013-10-25T09:59:21.450 回答
0

有两种方法 - 传递引用或传递值:

public class One {
    private int value = 0;
    public One(final int value) {
        this.value = value;
    }
    public int getValue() { return value; }
}

public class Two {
    private One one = null;

    public Two(final int value) {
        this.one = new One(value);
    }

    public Two(final One one) {
        this.one = one;
    }

    public int getValue() { return one.getValue(); }
}

当传递对 One 实例的引用时,该值是从 One 中读取的,并且只会更改 One 实例中保存的值。当传递一个基元 (int, boolean ...) 时,该值被复制并由 Two 实例“拥有”。阅读更多关于参考和价值观的差异以掌握这个想法。这很简单,一旦你明白了。

于 2013-10-25T10:09:08.867 回答