2011-08-14 11 views
7

İşte ben o işe yaramaz şaşırdım ama beni bu davanın açıklama bulmak için yine de ilginç söyleyemem bir şey . Bunu başlatmak için bir parametre olarak bu nesneyi alacak: neden bu çalışmaz

SomeClass someClass = null; 

Ve bir yöntem:

public void initialize(SomeClass someClass) { 
    someClass = new SomeClass(); 
} 

Sonra diyoruz:

initialize(someClass); 
System.out.println("" + someClass); 

It biz bir nesne var düşünün yazdırır:

null 

Yanıtlarınız için teşekkürler!

+0

olası kopyası [Java aktarımı referansı ile girilir mi?] (Http://stackoverflow.com/questions/40480/is-java-pass-by-reference) – Mat

+0

Muhtemel yinelenen [Java'da referans ile parametreleri geçirebilir miyim? ?] (http://stackoverflow.com/questions/1068760/can-i-pass-parameters-by-reference-in-java) –

+0

hiçbir soru işareti yoktur –

cevap

9

java da yapmak imkansız. C# 'de ref ya da out anahtar sözcüğünü kullanarak parametreyi geçersiniz. Java'da böyle anahtar kelimeler yoktur. Ayrıntılar için bu soruyu görebilirsiniz: Can I pass parameters by reference in Java?

arada, aynı sebepten dolayı iki tamsayılar takas olur java bir takas işlevi yazamam. Armen belirtildiği gibi

1

, ne yapmak istediğiniz bu şekilde mümkün değildir. Neden başlatmak için bir parametre olarak bu nesneyi alacak bir factory method?

0

Ve bir yöntem kullanmayın:

yöntemi durumunda bir parametre olarak bir nesneyi almaz. Null'a işaret eden bir referans alır. Daha sonra bu başvuruyu kopyalar ve SomeClass'un yeni örneğine işaret eder. Fakat açıkça, bir parametre olarak geçirilen referans hala boş işaret ediyor.