İç sınıflardaki statik üyeler
Statik iç içe sınıflar gerektirmeden iç sınıflarda statik üyeler tanımlayın.
Kod Karşılaştırması
✕ Java 8
class Library {
// Must be static nested class
static class Book {
static int globalBookCount;
Book() {
globalBookCount++;
}
}
}
// Usage
var book = new Library.Book();
✓ Java 16+
class Library {
// Can be inner class with statics
class Book {
static int globalBookCount;
Book() {
Book.globalBookCount++;
}
}
}
// Usage
var lib = new Library();
var book = lib.new Book();
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Daha fazla esneklik
İç sınıflar artık gerektiğinde statik üyelere sahip olabilir.
Paylaşılan durum
Bir iç sınıfın örnekleri arasında paylaşılan durumu takip edin.
Tasarım özgürlüğü
Yalnızca bir statik alan için statik iç içe sınıfa geçmeye gerek yok.
Eski Yaklaşım
Statik iç içe sınıf kullanılmalı
Modern Yaklaşım
İç sınıflarda statik üyeler
JDK'dan itibaren
16
Zorluk
Orta
JDK Desteği
İç sınıflardaki statik üyeler
Mevcut
JDK 16'dan itibaren geniş çapta kullanılabilir (Mart 2021)
Nasıl çalışır
Java 16'dan önce, yalnızca statik iç içe sınıflar statik üyeler içerebiliyordu. İç (statik olmayan) sınıflar, bir çevreleyen örnek gerektirdiğinden statik üyelere sahip olamazdı. Java 16, bu kısıtlamayı gevşeterek iç sınıflarda statik alanlar, metotlar ve hatta iç içe türlere izin verir.
İlgili Belgeler