Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > @Inherited


Автор: Java2 29.6.2006, 09:55
Народ, 

в документации написано, что если аннотацию пометить как @Inherited и применить к классу, тогда его наследник унаследует её. 
Я провел эксперемент:
Код


@MyAnno 
public class Parent {
}
public class Child extends Parent{

}

@Documented
@Inherited
@interface MyAnno {
    String value() default "test str";
    int v() default -1;
}

и сделал javadoc.
В результате класс Parent задокументировался с аннотацией, а наследник без неё.
Подскажите, пожалуйста, где тут у меня ошибка.

И ещё вопрос: не понятно, зачем нужна аннотация-маркер @Ovveride для методов?
т.е. в чём её логическая суть.
 

Автор: djGri 29.6.2006, 11:01
Цитата(Java2 @  29.6.2006,  08:55 Найти цитируемый пост)
зачем нужна аннотация-маркер @Ovveride для методов?

Пример:
Код

public class A {

    @Override public String toString() {

       return "blabla";
    }
}


Т.к. метод toString() унаследован от Object и ты его переопределяешь, надо добавить @Override. 

Автор: Java2 29.6.2006, 11:19
Цитата(djGri @  29.6.2006,  11:01 Найти цитируемый пост)
Т.к. метод toString() унаследован от Object и ты его переопределяешь, надо добавить @Override.  

понятно, а зачем это нужно делать? 

Автор: batigoal 29.6.2006, 11:26
Цитата(Java2 @  29.6.2006,  12:19 Найти цитируемый пост)
понятно, а зачем это нужно делать?  

Просто чтобы явно указать, что этот метод переопределяет родительский. Например, на случай, если ты хочешь его переопределить, но случайно опечатываешься в названии метода, и создаешь новый. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)