Varargs kullanan bir Java işlevinin (veya yapıcınızın) varargs ile mi yoksa bir diziyle mi çağrıldığını öğrenmenin bir yolu var mı? Java: Fonksiyonun varargs veya array ile çağrılıp adlandırılmadığını öğrenin
Aşağıdaki olduğunu varsayalım:public class MyCompositeObjects {
MyObject[] objects;
MyCompositeObjects(MyObjects... objects) {
this.objects = Arrays.copyOf(objects,objects.length);
// or just: this.objects = objects; ?
}
// ...
}
yapıcı sonradan değişebilir tek MyObject[]
argüman ile çağrılabilir ve Kurucuda dizi kopyalamak yoksa bu değişiklikleri uygulanacaktır üye değişkeni objects
da değil mi? Ancak, kurucu birkaç MyObject
s ile çağrılırsa, daha sonra sınıfın dışında değiştirmek için * dizisine başka bir gönderme yapılmaz, dolayısıyla doğrudan onu atayabilirim. Kurucunun içinde (veya genellikle, varargs alan herhangi bir işlev) nasıl çağrıldığını söyleyebilir miyim?
* nb: Bunun için belirli bir adı var mı? Sadece anonim bir dizi mi?
Statik fabrika örneğinizde sorunlar var. "Copy" boolean bir constructor argümanı ve objects.close() öğesine yapılan çağrı değildir. –