2013-09-26 4 views
1

Мне просто интересно, как я должен писать аннотацию @Override, потому что я вижу, что есть два пути. Первый:Как написать аннотацию @Override

class Lisa extends Homer { 
    @Override void doh(Milhouse m) { 
    System.out.println("doh(Milhouse)"); 
    } 
} 

источник: Брюс Экель, размышление на Java, 4-е издание.

Второй способ:

@Override 
public LittleFish next() { 
    // TODO Auto-generated method stub 
    return null; 
} 

Источник: Затмение методы автогенератора и я видел это в некоторых других местах.

Мне нравится, когда мой код чист и соответствует правилам Java, поэтому я действительно заинтересован в этой теме. Извините за немой вопрос, но я не смог найти ответ в Google и даже здесь.

Спасибо!

+1

возможный дубликат http://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation -and-why – Masudul

+3

Вопрос вкуса. Даже оракул [docs] (http://docs.oracle.com/javase/1.5.0/docs/guide/language/annotations.html) показывает оба стиля. Я предпочитаю второй, но просто выбираю один и придерживаюсь его. – kiheru

+0

Я бы сказал, что http://stackoverflow.com/questions/1464464/code-style-with-annotations является более близким дубликатом. – kiheru

ответ

1

Oracle Java "Predefined Annotation Types"

// mark method as a superclass method 
    // that has been overridden 
    @Override 
    int overriddenMethod() { } 

Но в любом случае, это в первую очередь на основе мнений, вопрос

EDIT:

Кроме того, это хороший стиль, когда у вас есть более одного АННОТАЦИЯ на метод, например:

@Type 
    @Column(name = "ID") 
    @Override  
    int overriddenMethod() { } 

выглядит лучше, чем

@Type 
    @Column(name = "ID") 
    @Override int overriddenMethod() { } 

или

@Type @Column(name = "ID") @Override int overriddenMethod() { } 
0
@Override 
void mySuperMethod() { ... } 

, как это делается в javadocs

0
@Override 
    String display() 
    { 
     // your code here 
    } 

Этот стиль строго соответствует соглашению Java Naming. Вы можете попробовать это.

1

Объявление аннотации @Override, прежде чем метод определенно будет более читаемым. Насколько мне известно, функциональных различий между ними нет, но все, что есть в одной строке, снижает удобочитаемость. Вы можете написать весь свой код в одной строке технически, но это не очень красиво.

Oracles own Java-Annotations-tutorial указывает, что это правильный путь. Вы также можете проверить this question из переполнения стека, где они говорят немного больше об переопределении, хотя и в более общем смысле.

Так это будет правильный способ сделать это :)

@Override 
private int doStuff() { 
    return 1; 
} 
Смежные вопросы