Bu benim kodumda var
Thread.currentThread().sleep(x);
Eclipse bana statik kullanmamı söylüyor
Thread.sleep(x);
bunun yerine neden? Aradaki fark nedir, bu 2 yöntem arasında işlevsellik açısından hiç fark var mı?
Bu benim kodumda var
Thread.currentThread().sleep(x);
Eclipse bana statik kullanmamı söylüyor
Thread.sleep(x);
bunun yerine neden? Aradaki fark nedir, bu 2 yöntem arasında işlevsellik açısından hiç fark var mı?
Yanıtlar:
İki değil tek bir yöntem vardır ve bu statiktir. Örnek referansı aracılığıyla statik bir yöntemi çağırabilseniz de, bu iyi bir stil değildir. Programcının bir örnek yöntemi çağırdığını düşündüğünü gösterir. Kafası karışmış bir programcı, başka bir iş parçacığının (mevcut olanın değil) bu şekilde uyumasına neden olabileceğini düşünüyor olabilir, ancak bu öyle değil.
Her iki kod satırınız da aynı şeyi yapar, ancak ikincisi daha iyi stildir.
Java'da uyku statik bir yöntemdir. Her iki örneğiniz de tamamen aynı şeyi yapıyor, ancak önceki sürüm kafa karıştırıcı çünkü belirli bir nesnede bir yöntemi çağırıyor gibi görünüyor, ancak bunu hiç yapmıyor. Örneğinizde çok önemli olmayacak, ancak aşağıdakilere sahipseniz daha tehlikelidir:
someOtherThread.sleep(x);
Bu sefer başka bir iş parçacığına uyumasını söylüyormuşsunuz gibi görünüyor, ama aslında şu anki iş parçacığını uyutuyorsunuz. Bu tür bir hatadan kaçınmanın yolu, her zaman belirli bir nesne yerine sınıfı kullanarak statik yöntemleri çağırmaktır.
İki yöntem çağrısı davranış açısından aynıdır çünkü aynı yöntemi çağırırlar, ancak statik alanlara ve yöntemlere erişmek için örnek yerine sınıf adını ( bu durumda Thread ) kullanmak, bu statikliği netleştirir. Bu uyarının üretilmesinin nedeni budur.
Ancak statik alanların ve yöntemlerin çoğu IDE'de belirli bir şekilde gösterildiğini düşünürsek (örneğin Eclipse ve IntelliJ IDEA'da italik yazı tipiyle), bu uyarı yine de gerekli mi? Belki Java'nın ilk günlerinde basit editörlerin kullanımda olduğu kadar gerekli değil.
Thread.currentThread().sleep(x);
ya da Eclipse'in söylediği gibiThread.sleep(x);
, ihtiyaç duyuluyorsa statik bağlam gereklidir, bu yüzden bu uykuda biraz gecikmeyi bekleriz.
Bir nesne tarafından belirlenen statik paradigma, yalnızca o belirli nesne yığını yazdırma yaşam döngüsünü etkiler, yine genel Nesne Yaşam Döngüsü statikinin o kadar da rahatsız edici olmadığı düşünüldüğünde, gerekirse kodlamayı kolaylaştırmak için kullanılabilir, ancak statik ayak olarak dikkatlice yapılmalıdır. print, Class
(örneğin: - Class.forName(pkg.className)
) ile aynı şekilde isme göre anılır object
ve sınıfın çalışma anında tek baskı kopyası olan herhangi biri tarafından değil .HEAP
bellekteki .
Yine nesnenin kullanımının ayrıca Zayıf, Hayalet, Güçlü tür referanslar tarafından artıları ve eksileri vardır ....,
Kod Doğa Tarafından Çevrilmiştir. İşleyişini ve işlevselliğini sağlamak için bizim yaptığımız yöntem bu.