2010-03-11 9 views
5

Neden java, yöntemlerin birden çok parametre girebilir,
, ancak yalnızca tek bir nesneyi (veya geçersiz) iade edebilir?Neden Java birden çok parametre alabilir, ancak yalnızca tek bir nesneyi döndürebilir?

Dili bir şekilde uygulamak veya kullanmak daha kolay hale getirdi mi?

+0

Birden çok bağımsız değişken döndürmek için etkili bir şekilde gerçekten hiçbir çözüm sunmuyor. Kayıt için, bir argümanı döndürmek için bir yöntem istiyorsam, bir argüman olarak gerekli tipin önbelleğe alınmış bir dizisini (uzunluk 1) geçiririm ve ilk alanı ayarlayabilirim, alternatif olarak, bir nesne dizisi döndürebilir ve Bunu kullanmak, ama kaçınmak istediğiniz gereksiz nesne oluşturma. –

cevap

5

Muhtemelen bu, C ve C + + 'nun bunu yapma biçimidir ve Java dili sözdizimi, bu dillere (ve büyük olasılıkla) dayalıdır.

Aslında this article göre Gosling C++ derleyicisi uzatarak başladı, bu yüzden yine aynı sözdizimi çok takip edeceğini mantıklı:

gelişme daha platformdan bağımsız süreç yapmak için (ve Böylece tüketici pazarının CPU esnekliği talebini karşılayacaktır), Gosling C++ derleyicisini genişleterek başladı.

5

Belki de amaç, bir nesnede çoklu dönüş değerlerinin kapsüllenmesiydi?

+0

Nesnelerin referans olarak geçtiğine aldırış etmeyin. – Paul

0

Benim tahminim bir kongre olurdu: büyük OO dilleri böyle yapar/yaptı, yani Java'nın yaptığı şey budur. Ancak, resmi argüman muhtemelen kapaklarla ilgili olanla aynı olacaktır - gerçekten ihtiyaç duyulmayan görevlerle sıradan görevler için standart sözdizimini ortaya çıkaracak şeyler içermez. Ya da belki de, tek bir yöntemin, bir nesneye girebilecek/gidebilecek bir dizi ilgili değer döndürmesi gerektiğini düşündüler. Ya da belki de bunu düşünmediler/zamana sahipler (oldukça standart geliştirici ücreti). İlgili bir

, birden döner alay kapanışları kullanmanın bu tartışma bulundu: http://weblogs.java.net/blog/brucechapman/archive/2007/11/closures_and_mu.html

4

Emin bilmiyorum ama Java başka yığın tabanlı çalışma zamanı gibi yürütülür düşünün. Diğer bir deyişle, parametreleri bir yöntem olarak geçirmenin, denetim yöntemini yönteme aktarmadan önce yığını üzerine bastırarak kolayca yapıldığı anlamına gelir. Dönüş değerleri muhtemelen VM'de C ve C++ gibi ele alınır - dönüş değeri her zaman doğaya göre tek değerli olan bir kayıt defterine yerleştirilir.

Generiklerle birlikte, çoğu durumda geri dönmek için çok büyük bir yük olmayan Tuple<type1, type2, type3> gibi bir öğenin örneğini döndürerek birden çok değerin tür güvenli bir şekilde ele alınabileceği için, bu çok büyük bir sorun değildir. .

İlgili konular