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

  • DrePwn

    DrePwn

    22 Temmuz 2011
  • SHAYTARDS

    SHAYTARDS

    1 EKİM 2008
  • stokelycalm

    stokelycalm

    28 Aralık 2010