2015-10-10 130 views
0

我已經在Java程序的某個類中創建了一個對象的實例。我如何將該對象的同一個實例傳遞給另一個類?如何將創建的對象傳遞給另一個類Java

我是否需要做一些類似於在原始類中創建某種類型的getter方法以將對象傳遞給其他類的方法?

+0

你說getter,但我會建議你使用setter(或在構造函數中傳遞它)。 –

+0

請注意,您的問題的答案還取決於模型中的線程數。如果你的程序是單線程的,你收到的答案都是合適的。但是,如果您希望將對象傳遞給另一個線程,則必須考慮數據一致性的同步。通常,您希望發送到其他線程的對象必須「安全發佈」以確保接收線程不會收到過時的或不一致的數據。 – scottb

回答

0

「傳遞」它,你需要一種方法或其他類的構造函數可以接受它:

public class Other { 
    // either 
    public Other(MyClass obj) { 
     // do something with obj 
    } 
    // or 
    public void method(MyClass obj) { 
     // do something with obj 
    } 
} 

然後調用構造函數/方法:

MyClass x = new MyClass(); 

Other other = new Other(); 
other.method(x); 
0

您可以通過其他類的構造函數傳遞該對象。

簡單的例子:

Class A{ 
} 

Class B{ 
    A a; 
    public B(A obj){ 
     this.a=obj 
    } 
} 
0

讓我們假設你想A類的對象傳遞給B類。現在你已經創建的對象是這樣的:

A object = new A(); 

現在在你的B類,可以編寫接受A對象的方法。它應該是public,如果你願意,你可以使它成爲static

如果你想通過objectB,你必須要做些什麼,對吧?所以你應該相應地給你的方法命名。您可能想要在B中指定一個類型爲A的字段(我們將其稱爲fieldA)。 (也許不是你想要的,但我會用這個例子)

讓我們來看看方法:

 
public void setFieldA (A a) { 
    fieldA = a; 
} 

您可以調用此方法如下:

anObjectOfClassB.setFieldA (object); 

當然,如果它是靜態的,你不需要anObjectOfClassB

0

有很多方法將一個對象的引用傳遞給另一個對象。最簡單和最常見的方式有:

  • 作爲構造函數的參數,
  • 作爲setter方法的參數;例如setFoo(Foo foo)設置「foo」屬性或
  • 作爲要傳遞的對象中的「添加」方法將要添加到集合;例如addFoo(Foo foo)

然後有各種更復雜的模式,其中對象使用發佈/訂閱,回調,期貨等傳遞。

最後有一些技巧可以用來跨越抽象邊界「走私」對象......這通常是一個壞主意。

相關問題