Neden java sınıfları uygulanan arabirimleri ek açıklamalar miras değil mi? | Netgez.com
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

  • 24 Канал

    24 КанаÐ

    5 ÅžUBAT 2006
  • EatingIn

    EatingIn

    12 EKİM 2013
  • Wild Academy

    Wild Academy

    8 Aralık 2009