2013-10-25 31 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實例「擁有」。閱讀更多關於參考和價值的差異來掌握這個想法。這很簡單,一旦你明白了。