Neden java sınıfları uygulanan arabirimleri ek açıklamalar miras değil mi?
Guice değil SOP bazı yöntem çağrıları önünü kesmek için kullanıyorum. Benim sınıf bir arabirim uygulayan ve Guice doğru yöntemleri seçmek diye arabirim yöntemleri açıklamak istiyorum. Eğer ek açıklama türü Inherited ek açıklama ile açıklama bile uygulama sınıfı Miras java doc belirtilen açıklama miras yok:
Bu meta-açıklama unutmayın sadece ek açıklamalar neden olur miras superclasses; uygulanan arabirimleri açıklamaları hiçbir etkisi yoktur.
Bunun nedeni ne olabilir? Bir nesnenin sınıf çalışma zamanında uygulamak tüm arayüzleri tanımaya bu kararın arkasında iyi bir nedeni olmalı bunu yapmak o kadar da zor bir şey değil.
CEVAP
Sebebi birden çok devralma başka bir sorun ortaya çıkacak bence.
Örnek:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD) @Inherited
public @interface Baz { String value(); }
public interface Foo{
@Baz("baz") void doStuff();
}
public interface Bar{
@Baz("phleem") void doStuff();
}
public class Flipp{
@Baz("flopp") public void doStuff(){}
}
public class MyClass extends Flipp implements Foo, Bar{}
Eğer bunu yaparsam:
MyClass.class.getMethod("doStuff").getAnnotation(Baz.class).value()
sonuç ne olacak? '', '' veya ''? flopp phleem baz
Bu nedenle, arayüzleri açıklamaları nadiren yararlıdır.
Neden Java statik olarak bir sınıf bil...
Liste<Köpek> Listenin alt<Hay...
Neden't java değil.açıklama.Set(i...
Neden &; son" Java 8 arabirim yön...
Neden mümkün Java ek açıklamaları uzat...