On Sun, Aug 28, 2011 at 9:25 PM, Vincent Massol <[email protected]> wrote:
>
> On Aug 28, 2011, at 12:29 PM, Vincent Massol wrote:
>
>> Hi devs,
>>
>> I've just realized that using @override is enough to generate a proper 
>> javadoc copied from the overriden method and that checkstyle doesn't 
>> complain either.
>>
>> Basically instead of writing:
>>
>>    /**
>>     * {@inheritDoc}
>>     *
>>     * @see org.xwiki.logging.LoggerManager#popLogListener()
>>     */
>>    @Override
>>    public EventListener popLogListener()
>>
>>
>> We can simply write:
>>
>>    @Override
>>    public EventListener popLogListener()
>>
>> Advantages:
>> 1) Less text to type and smaller class files
>> 2) Less duplicated text
>>
>> I thus propose to use this from now and to progressively remove unnecessary 
>> javadoc in our legacy code.
>>
>> BTW this is also explained in the javadoc tool:
>> See section "Automatic Reuse of Method Comments" in 
>> http://download.oracle.com/javase/1.3/docs/tooldocs/win32/javadoc.html
>>
>> WDYT?
>>
>> Here's my +1
>
> ok in case you're wondering if using @override is valid when implementing an 
> interface, here's a little detective work:
>
> 1) If you read Java 6 javadoc you'll find in 
> http://download.oracle.com/javase/6/docs/api/java/lang/Override.html:
> "Indicates that a method declaration is intended to override a method 
> declaration in a superclass. If a method is annotated with this annotation 
> type but does not override a superclass method, compilers are required to 
> generate an error message."
>
> So this seems to indicate it's not valid. However…
>
> 2) If your read http://blogs.oracle.com/ahe/entry/override_snafu you'll find 
> that the javadoc for 1.6 isn't correct (read also 
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5008260) and reading 
> http://stackoverflow.com/questions/212614/should-a-method-that-implements-an-interface-method-be-annotated-with-override
>  will show you that actually using @override is supported when implementing 
> an interface in Java 6 but not in Java 5… ;)
>
> Some more reading about using @override:
> http://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why

Apart from the documentation I would add two things that you can see
by yourself:
* Eclipse JDT automatically put the @override when implementing on
interface and using Java 6 (at least with Eclipse 3.7).
* javac fail to build when using @override when implementing on Java 5
and is OK on Java 6 so it's probably new

>
> Thanks
> -Vincent
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>



-- 
Thomas Mortagne
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to