SORU
20 Ocak 2011, PERŞEMBE


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
20 Ocak 2011, PERŞEMBE


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • KoreanFrogMania님의 채널

    KoreanFrogMa

    18 Aralık 2011
  • metal571

    metal571

    30 Mayıs 2006
  • UberFacts

    UberFacts

    26 EKİM 2013