2013-10-25 51 views
-2

我是java新手,正在尝试像下面的示例那样将变量从一个类传递到另一个类,我想知道这是否可能,以及如果是这样,我会如何去做。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()); 

    } 


} 

谢谢,

纳兹

+1

你想传递什么确切的变量?你想在哪里通过它?什么是你得到确切的错误? –

+0

这听起来像是一个非常糟糕的主意 –

+0

@PhilippSander的想法很常见,问题不是很清楚。 – SeniorJD

回答

2

让我们考虑这一点,从B类则A类需要知道的关于B级

public class A { 

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

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

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

ClassB b = new ClassB(); 
ClassA a = new ClassA(b); 
b.getTest(); 
a.printValue(); 
1

您必须先为类One创建一个实例。尝试,如果你要访问一个类中的变量此

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

} 
+0

这是相同的对象还是一个新的对象,所以我不能访问数据,从主要声明的? – nazerb

+0

这个只是与这个方法不同而且局部。 –

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(); 
    } 
} 
+0

我很担心调用一个只输出字符串“getValue”的方法。这意味着它会返回一些东西。 –

+0

你说得对,'printValue'更好。 – SeniorJD

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实例中进行更改。当传递基元(int,boolean ...)时,该值将被复制并由Two实例“拥有”。阅读更多关于参考和价值的差异来掌握这个想法。这很简单,一旦你明白了。