本文首发于 http://www.YoungZY.com/
@Override
,一定不陌生吧!就是没敲过,也一定见过。是不是觉得它可有可无,多它不多,少它不少?更有甚者,把它当个累赘。
不爱搭理它就算了。IDE帮你生成了你还要删掉它,这就有点过分了哈。
它真的是毫无用处吗?开发JDK和IDE的大神们造了个无用的东西?
看看下面这个例子,请你来找茬儿。
IShape类
1 2 3 |
public interface IShape { String introduceYourself(); } |
Rectangle类
1 2 3 4 5 |
public class Rectangle implements IShape { public String introduceYourself() { return "我是一个长方形。"; } } |
Square类
1 2 3 4 5 |
public class Square extends Rectangle { public String introduceYouself() { return "你可以叫我长方形,但它并不是我的真名。我的真名叫正方形。"; } } |
测试类
1 2 3 4 5 6 7 8 |
public class AnnotationTest { @Test public void introduceYourself() { IShape aShape = new Square(); assertEquals("你可以叫我长方形,但它并不是我的真名。我的真名叫正方形。", aShape.introduceYourself()); } } |
测试结果
这是为什么呢? 明明是一个正方形,它怎么偏说自己是个长方形呢?能看出是哪的问题吗? 如果还是找不到问题,在方法上添加@Override
注解看看。 是不是很神奇?
所以,请善待它吧! 其实之前我也没认识到这一点。是最近听了一个关于 Annotation的课才知道它还有这个用处。
加入讨论