Java 8'den başlayarak, defaultarayüzlere yöntemler tanıtıldı. Etkili, bu araçlar bir in değil tüm yöntemler bu interfacevardır abstract.
Java 9 (belki) ile başlayarak, privateyöntemlere izin verilecektir. Bu, bir interfaceiçindeki tüm yöntemlerin olmadığı anlamına gelir public abstract.
"Java arabirimindeki yöntemler publicerişim değiştiriciyle veya değiştiriciyle bildirilmeli mi?" /programming/161633/should-methods-in-a-java-interface-be-declared-with-or-without-a-public-access-m adresindeki Stack Overflow'da istendi
Orada, cevapların çoğu public abstractbunun kullanılmaması gerektiğini savundu çünkü bir yöntemdeki hiçbir yöntem interfacebaşka bir şey olamaz public abstract. Artık durum böyle değil.
Peki, arayüzlerin bu yeni özellikleri ışığında, public abstractanahtar kelimeler bir Java arayüz yöntemi bildiriminde kullanılmalı mıdır?
Özel ortamımda, zaman zaman yazılım kodunu deneyimli, ancak Java'da deneyimli olmayan, Java kodunu okuyan insanlara sahip olacağız. public abstractAnahtar kelimeleri dışarıda bırakmanın artık arayüzlerin bu anahtar kelimeleri kullanmak için nasıl farklı kurallara sahip olduğuna dair geçmişe aşina olmayanlar için ek bir karışıklık yaratacağını hissediyorum .
abstractolarak koşullanması gittikçe kıvrılıyor. Java 9'da aynı cümle, "Bir değiştirici, değiştirici veya defaultdeğiştirici içermeyen bir arabirim yöntemi dolaylı olarak soyuttur ..." Ayrıca, anahtar sözcükleri açıkça kullanmamaya ilişkin yardımcı argümanlar, yani tüm arabirim yöntemleri , şimdi tartışmalı. staticprivatepublic abstract
streamiçin java.util.Collectionya Map.getOrDefault(). Alternatif olarak, yeni bir alt arabirim oluşturmak ve Graphics2D gibi herkesi mahvetmek ve hiç kimse bundan hoşlanmadı!
defaultDeğiştirici veya değiştiriciden yoksun bir arabirim yöntemistaticdolaylı olarakabstract... İzin verilir, ancakabstractböyle bir yöntem bildirimi için değiştiriciyi yedek olarak belirtmek için bir stil meselesi olarak önerilmez . " Neden her şeyin değişmesini bekliyorsunuz?