6

java.lang.Integer için statik bir içe aktarma içeren bir sınıfınız varsa ve benim de parseInt(String) statik yöntemine sahipse, parseInt("12345") numaralı çağrı hangi yönteme yönlendirilir?statik imports yöntemi

Teşekkürler!

cevap

6

Kendi sınıfının içindeyseniz, sizin yöntemini çağırır.
Sınıfınızın dışındaysanız (ve her iki sınıfı da içe aktarıyorsanız) hangi sınıfı kullanacağınızı belirtmeniz gerekir.

kanıtlayın: http://java.sun.com/docs/books/jls/download/langspec-3.0.pdf 8 $ ve $ 6.3

+0

Standartlar tarafından garanti edildiğini gösteren bir referans gösterebilir misiniz? Derleyici bağımlı olabilir ... – amit

+0

am1'e cevap vermek için sm1'i bekletme – MozenRath

+2

Java Dil Özellikleri'nden: $ 8: Bir üyenin kapsamı (§6.3) (§8.2), üyenin hangi sınıfa ait olduğu beyanının tüm gövdesidir. aittir. | 6,3 $ 'dan itibaren: Beyannamenin kapsamı, beyanname ile beyan edilen tüzel kişinin basit bir isimle (anlaşılabilir olması koşuluyla (§6.3.1)) anılan programın bölgesidir. – Paranaix

5

bu deneyin (yorumlara bakınız):

import static java.lang.Integer.parseInt; 

public class Test { 
    public static void main(String[] args) { 
     System.out.println(parseInt("12345")); 
    } 

    private static int parseInt(String str) { 
     System.out.println("str"); 
     return 123; 
    } 
} 

sonucu: size sınıfındaki yöntem ilk yürütüldüğünde

str 
123 

.

+2

kapsamı boyunca meydana geldiği noktada, kapalı bir kapsamda olan n adında, standart tarafından durumun garanti edildiğini gösteren bir başvuru gösterebilir misiniz? Derleyici bağlı olabilir ... – amit

+1

+1 Kanıtı sevdim. – Bohemian

İlgili konular