When I've started to play with Java5 new features I'm surprised there no was a way to static check (at compile time) that a method is implementing a method of an interface. There is the @Override annotation but it's only useful to tell to the Java compiler I'm overriding a super class method, nor an abstract one neither an interface method.
Now I discovered Sun staff covered the gap in Java6 just extending the behavior of @Override annotation also to extend abstract methods or to implement interface methods. Great, apart there is no mention on public JDK 6 JavaDocs!!!
Someone raised a bug on Sun's tracker to correct it: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6399361
My Eclipse IDE 184.108.40.206 recognizes the new feature and add the @Override annotation every time I override a method or implement an interface method. Cool.
But now I've the big problem that Roma Framework's sources are full of them and many users reported me they won't compile under Java5! Yes, because Roma needs JDK 5 to compile (but some additional modules that require Java6 in order to use Scripting facilities. The modules now are just Workflow Tevere and ETL).
The fastest solution is to set JDK 5 as compliance level in every single projects don't use Scripting. It works. Blessed and damned @Override...