Ben 3 parametre kabul eden bir Java sınıfı için bir başlatma yöntemi oluşturmak istiyorum:Zorunlu Dizi Boyut Parametreli Java Yöntemi?
Employee[] method(String[] employeeNames, Integer[] employeeAges, float[] employeeSalaries)
{
Employee myEmployees[] = new Employee[SIZE];// dont know what size is
for (int count = 0; count < SIZE; count++)
{
myEmployees[count] = new Employee(employeeNames[count], employeeAges[count], employeeSalaries[count]);
}
return myEmployees;
}
Bu kodu yanlış olduğunu fark edebilirsiniz. BOYUTU değişkeni tanımlanmamış. Benim sorunum, 3 dizide geçmek istediğimdir, ancak üç dizinin aynı dizi boyutunun TÜMÜ olduğunu garanti edip edemeyeceğimi bilmek isterim. For döngüsü içindeki kurucu dizilerin tüm parametrelerini kullandığı için for döngüsü başarısız olmaz.
Belki de Java'nın benim sorunum için bir çözüm uygulayabilen farklı bir özelliği vardır. For döngüsünde kullanılacak olan SIZE adında başka bir parametreyi kabul edebilirim, ancak bu parametreler 1 ve 2'nin boyutu 10 ise ve 3. parametre boyut 9'un bir dizilimi ise, bu sorunu çözmez.
Sadece açıklığa kavuşturmak berrak değildi. 3 argümanın hepsinin aynı sayıda elemanı içeren diziler olduğunu nasıl uygulayabilirim?
Dizi boyutlarını belirten ek bir parametre kullanmak çok zarif ve kirli değildir. Ayrıca, dizi parametrelerinin farklı boyutlu diziler içermesi sorunu da çözmez.
Teşekkür Jon, mükemmel cevap! –
THis, NullPointerException'ı kullanmanın yanlış yolunu düşündüğümün iyi bir örneğidir. geçirilen parametrelerin her biri için bir kişisel kontrol yaparsam (employeeNames == null) { yeni IllegalArgumentException ("employeeNames == null") atarsa; } Bu, stacktrace'ı sorunu tanılamak için çok daha yararlı hale getirir. –
Sanırım bu durumda bir NPE atmak kadar kabul edilebilir (hiç kimse bir IAE atmaya katılmazken); ama belki de bu tartışma/tartışmadaki bir uzlaşma olarak, NPE'ye bir mesaj eklemek daha iyi olacaktır. –