1. Beyan yöntemistatic
hafif performans avantajı sağlar, ancak daha kullanışlı olanı, elinizde bir nesne örneği olmadan kullanılmasına izin verir (örneğin, fabrika yöntemini veya bir tekli almayı düşünün). Ayrıca, yöntemin doğasını anlatmak için belgeleme amacına da hizmet eder. Kod okuyucularına ve API kullanıcılarına yöntemin doğası hakkında anında ipucu verdiği ve aynı zamanda orijinal programcı için bir düşünme aracı olarak hizmet ettiği için bu dokümantasyon amacı göz ardı edilmemelidir - amaçlanan anlam hakkında açık olmak yardımcı olur aynı zamanda doğru düşünür ve daha kaliteli kod üretirsiniz (kişisel deneyimlerime dayanarak düşünüyorum, ancak insanlar farklıdır). Örneğin, mantıklıdır ve bu nedenle, bir tür üzerinde çalışan yöntemler ile türün bir örneğine etki eden yöntemler arasında ayrım yapmak istenir (Jon Skeet bir C # sorusuna yaptığı yorumda ).
static
Yöntemler için başka bir kullanım durumu, prosedürel programlama arayüzünü taklit etmektir. java.lang.System.println()
Sınıfı ve içindeki yöntemleri ve nitelikleri düşünün . Sınıf java.lang.System
, somutlaştırılabilir bir nesne yerine bir gruplama adı alanı gibi kullanılır.
2. Eclipse (veya başka herhangi bir programlanmış veya başka türde - biyolojik olarak birleştirilebilir veya biyolojik olarak birleştirilemez - varlık) hangi yöntemin statik olarak ilan edilebileceğinden nasıl emin olabilir? Bir temel sınıf, örnek değişkenlerine erişmiyorsa veya statik olmayan yöntemleri çağırmıyor olsa bile, miras mekanizması tarafından işler değişebilir. Yalnızca yöntem alt sınıfı miras alarak geçersiz kılınamazsa, yöntemin gerçekten bildirilebileceğini% 100 kesinlikle iddia edebiliriz static
. Bir yöntemin geçersiz kılınması, iki durumda
private
(hiçbir alt sınıf onu doğrudan kullanamaz ve prensipte bile bilmiyor) veya
final
(alt sınıf tarafından erişilebilir olsa bile, örnek verilerine veya işlevlere başvurmak için yöntemi değiştirmenin bir yolu yoktur).
Eclipse seçeneğinin mantığı budur.
3. Orijinal poster aynı zamanda şunu sorar: " Bir yöntemi statik olarak işaret etmek, sanırım herhangi bir örnek değişkeni kullanmadığınızı gösteriyor, bu nedenle bir utils stil sınıfına taşınabilir mi? " Bu çok iyi bir nokta. Bazen bu tür bir tasarım değişikliği uyarı ile belirtilir.
Eclipse kullansam ve Java ile programlasam kişisel olarak etkinleştireceğime emin olacağım çok yararlı bir seçenek.