SORU
8 Mart 2011, Salı


Yöntem NULL parametre için Aşırı yükleme

Parametreleri ile üç yöntem ekledim:

public static  void doSomething(Object obj) {
    System.out.println("Object called");
}

public static  void doSomething(char[] obj) {
    System.out.println("Array called");
}
public static  void doSomething(Integer obj) {
    System.out.println("Integer called");
}

Arıyorumbir şey(null)o zaman derleyici hata olarak atıyorbelirsiz yöntemler. Yani sorun çünküİnteger ve char[] yöntemleriyaTam sayı ve Nesne yöntemleri?

CEVAP
8 Mart 2011, Salı


Java her zaman geçerli bir yöntem en özel geçerli sürüm (JLS §15.12.2) kullanmaya çalışır.

null türleri Object, char[] Integer için geçerli bir değer. Bu nedenle tüm 3 Sürüm geçerlidir, Java en belirgin olanı bulmak zorunda.

Object char[] süper-türü olduğundan dizi versiyonu Object-sürüm daha özeldir. Bu yüzden bu iki yöntem varsa, char[] sürüm seçilecektir.

char[] Integer sürümleri hem de mevcuttur, o zamanher ikisi deObject ama daha spesifik bunların hiçbiri diğerinden daha çok özeldir, Java aramak için hangi bir karar olamaz. Bu durumda uygun türü için bağımsız döküm arama yapmak istediğiniz açıkça belirtmek Zorundasınız.

Uygulamada bu sorun, bir şeyden daha çok nadiren oluşur. Bunun nedeni, sadece açıkça BM özel yerine bir türde bir değişken (Object) null ile veya bir yöntem aradığın zaman gerçekleşir.

Tam tersine, aşağıdaki çağırma gayet anlaşılır olurdu:

char[] x = null;
doSomething(x);

Hala null Java aramak için tam olarak ne bilir değerini yolunuz olsa da, dikkate değişkenin türü alacak beri.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • hans peder sahl

    hans peder s

    22 Temmuz 2009
  • stokelycalm

    stokelycalm

    28 Aralık 2010