2011-10-11 15 views
23

Özel bir iç sınıfta özel bir yönteme sahibim ki bu da SafeVarargs ek açıklamasını kullanmak istiyorum. Ancak, statik veya son bir yönteme sahip olmak zorundayım. Neden özel bir yöntemin de nihai olması gerekiyor? Bu gereksiz değil mi?java @SafeVarargs Niçin özel yöntemlerin son haline gelmesi gerekiyor

+0

ben hata mesajı "Geçersiz java.lang gibi bir şey olurdu @Safe nihai yöntemleri için statik yöntemleri için, yapıcılar için varargs ve java-9 özel – gstackoverflow

cevap

15

Bu gereksiz ve mükemmel bir noktaya getiriyorsunuz.

Nihai veya statik gereksinimin gerçek sebebi, yöntemin geçersiz kılınamayacağını ve bu nedenle bir alt sınıfın, @SafeVarargs ek açıklamasını tanımsız kılan bir yöntemle verileri değiştiremediğini düşünüyorum. yöntemin

Ancak, gereksiz olmasına rağmen, bir kararın o kadar da kötü bir şey değil - programcıların her yöntemi mümkün olduğu kadar özel hale getirecek ve ardından gerektiğinde yavaşça sınıf açacaklardır. Bu yöntem, özel kapsamdayken son olarak işaretlenirse, yöntem açılacaksa, yalnızca erişim düzeyindeki değişiklikle birlikte @SafeVarargs ek açıklamasına sahip olabilir. Nihai, kasıtlı olarak kaldırılırsa, derleme zamanı hatası alırsınız, ancak önceden almış olsaydınız, özel erişimi (takım tabanlı bir ortamda kendiniz olmayabilir) kaldıran kişi neden karıştırılmayacaktır? "özel" değiştiricinin kaldırılması aniden kodun artık derlenmesini sağlar.

+1

için yana kullanabilirsiniz düzeltmek anlamak durumunda. SafeVarargs ek açıklaması: Örnekleme yöntemi ... nihai ya da özel değil, "özel olanı kim kaldırırsa kafa karışıklığı olmaz." –

4

Bu özellik Projesi Coin 2 parçasıdır ve özel yöntemler üzerinde It çağrısı Kabul @SafeVarargs

Temmuz 2017

önümüzdeki Java 9 avalaible olacaktır.

Link.

İlgili konular