SORU
11 Kasım 2011, Cuma


Java zor bir üçlü operatörü - autoboxing

Hadi aşağıdaki kod parçasında basit Java kodu arayın:

public class Main {

    private int temp() {
        return true ? null : 0;
        // No compiler error - the compiler allows a return value of null
        // in a method signature that returns an int.
    }

    private int same() {
        if (true) {
            return null;
            // The same is not possible with if,
            // and causes a compile-time error - incompatible types.
        } else {
            return 0;
        }
    }

    public static void main(String[] args) {
        Main m = new Main();
        System.out.println(m.temp());
        System.out.println(m.same());
    }
}

Bu basit Java kodu, temp() yöntem sorunları derleyici hata olsa da dönüş türü işlev int ve bunun için çalışıyoruz dönüş değeri null (deyim return true ? null : 0;). Derlenmiş, belli ki bu 6* *çalışma zamanı özel durumuna neden olur.

Ancak, aynı şeyi eğer if deyimi (same() yöntemi gibi) ile üçlü operatör ifade edecek olursak yanlış olduğu ortaya çıkmaktadıryokderleme zamanı sorun, bir hata! Neden?

CEVAP
11 Kasım 2011, Cuma


Derleyici yorumlar null olarak bir null başvuru için bir Integer, uygular autoboxing/kutulama kuralları için koşul operatörü (anlatıldığı gibi Java Language Specification, 15.25), ve mutlu bir şekilde hareket eder. Bu deneyerek teyit edebilirsiniz NullPointerException çalıştırma aynı anda oluşturur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Louis C.K.

    Louis C.K.

    18 HAZİRAN 2006
  • Schmittastic Jr.

    Schmittastic

    19 Mart 2013
  • FusioNGamiing

    FusioNGamiin

    10 Temmuz 2007