Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail From: Jim Janney Newsgroups: comp.lang.java.programmer Subject: Re: @Override Date: Thu, 26 Jul 2012 20:00:05 -0600 Organization: slowly at first, then all at once Lines: 38 Message-ID: References: <75036e8b-8b5f-4ea4-aef7-c063249f5707@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: mx04.eternal-september.org; posting-host="3e796541df3cd2e39d75fcba86cc47b9"; logging-data="11198"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/tpucUvIr4jESCsr9JA5Uw" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) Cancel-Lock: sha1:Z/VYIgPfBEo26ZnwYhCltbm10p0= sha1:g0QUyQURHOFuVr7fqqNr3l9F6cs= Xref: csiph.com comp.lang.java.programmer:16402 Eric Sosman writes: > On 7/23/2012 2:30 PM, bob smith wrote: >> Is it really necessary to write @Override when you override or is this just "a good thing"? > > Two benefits of @Override appear to me, one from its presence > and one from its absence: > > - If you write @Override and then misspell the method name or > mess up the parameter list, Java will say "Hey, wait: There's > nothing in the superclass with this signature; what do you > think you're doing?" And then you'll say "Oops!" and fix > the problem, instead of wondering why your "overriding" method > doesn't seem to work. > > - If you write a method and your IDE starts suggesting that you > ought to tag it with @Override, you'll be alerted that you've > overridden something you didn't intend to.[*] > > Two benefits; that's all I see. Hence, like indentation and > Javadoc comments, not "really necessary" ... > > [*] This actually happened to me earlier today. I was writing > a little Swing doodad to edit the "locations" of inventory items, > and I gave it a getLocation() method. NetBeans started clamoring > for @Override, and I realized that my doodad extended JPanel which > in turn extended JComponent, which already has a getLocation() ... > Time for "Facepalm!" and a quick name change. When you've overridden a class method in some third-party package and then upgrade to a later version of that package, it sometimes turns out that the method has been removed, or renamed, or given some additional parameters. It's much nicer to get a compile-time error than to eventually discover that your overriding method is no longer being called. This has happened to me more than once with Hibernate. -- Jim Janney