Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!news-out.readnews.com!transit4.readnews.com!news-out.news.tds.net!newsreading01.news.tds.net!53ab2750!not-for-mail From: "Jim Janney" Subject: Re: @Override Message-ID: <50142C2A.55426.calajapr@time.synchro.net> X-Comment-To: Eric Sosman Newsgroups: comp.lang.java.programmer X-FTN-AREA: COMP.LANG.JAVA.PROGRAMMER X-FTN-MSGID: 1:261/38 fc813f41 Content-Type: text/plain; charset=IBM437 Content-Transfer-Encoding: 8bit X-Gateway: time.synchro.net [Synchronet 3.16a-Win32 NewsLink 1.98] Lines: 63 Date: Sat, 28 Jul 2012 18:36:42 GMT NNTP-Posting-Host: 69.21.70.65 X-Complaints-To: news@tds.net X-Trace: newsreading01.news.tds.net 1343500602 69.21.70.65 (Sat, 28 Jul 2012 13:36:42 CDT) NNTP-Posting-Date: Sat, 28 Jul 2012 13:36:42 CDT Organization: tds.net Xref: csiph.com comp.lang.java.programmer:16455 To: Eric Sosman From: "Jim Janney" To: Eric Sosman From: "Jim Janney" To: Eric Sosman From: Jim Janney 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 -+- BBBS/Li6 v4.10 Dada-1 + Origin: Prism bbs (1:261/38) -+- Synchronet 3.16a-Win32 NewsLink 1.98 Time Warp of the Future BBS - telnet://time.synchro.net:24 -+- BBBS/Li6 v4.10 Dada-1 + Origin: Prism bbs (1:261/38) -+- Synchronet 3.16a-Win32 NewsLink 1.98 Time Warp of the Future BBS - telnet://time.synchro.net:24 --- BBBS/Li6 v4.10 Dada-1 * Origin: Prism bbs (1:261/38) --- Synchronet 3.16a-Win32 NewsLink 1.98 Time Warp of the Future BBS - telnet://time.synchro.net:24