Bu soruyu sorarken özellikle bir konu için sormuştum.
Kısa cevap hayır, java out parameter desteklemiyor.
Referans tipindeki değişkenleri bir fonksiyona geçirdiğiniz zaman fonksiyonun içinde o referansın gösterdiği nesne değiştirilebilir ve fonksiyon dışında kullanılabilir. Ama fonksiyon içinde o değişken için bir nesne yaratılır ve atanırsa fonksiyon dışına çıkmaz, içeride kalır.
Örneğin;
{
ArrayList<String> a = new ArrayList<>();
ekle(a);
System.out.println(a.size());
}
void ekle(ArrayList<String> x) {
x.add("1");
x.add("2");
}
Bu kodda a değişkeninin büyüklüğü 2 olacak. Çünkü nesne ekle fonksiyonunun dışında tanımlanmıştır ve bu fonksiyona parametre olarak gelmiştir.
{
ArrayList<String> a = null;
ekle(a);
System.out.println(a.size());
}
void ekle(ArrayList<String> x) {
if(x == null) x = new ArrayList<String>();
x.add("1");
x.add("2");
}
Bu örnekde ise x değişkeni dışarıya çıkamayacak yani bir out parametre olarak çalışamayacak. O yüzden bu kodda size değeri bize 0 olarak dönecek.