2012-02-13 79 views
2

似乎在活动,例如onCreate()方法,它并没有太大的差别,如果我有@Override注释与否。他们都工作。 (只要我打电话super.onCreate()回调里面,它会调用父类的方法。)关于在活动@Override注释回调

有人能告诉我,为什么我们需要有@Override注解生命周期回调的活动

我问这个,因为我测试没有@Override注释,我的应用程序仍然运行成功。

回答

11

这更像是一个很好的开发实践。

如果您错误地想要重写超类(或实现的接口)中不存在的方法,您将得到一个错误。

认为你想覆盖“onCreate”,但你拼错它,并写“onCreatee”。用这个注释,你会得到一个错误。没有它,你最终会花费大量的时间去理解为什么你的初始化方法不能正常工作。

+0

+1对于我很赞同的答案,我同意......它是结构化编码的一部分...... – 2012-02-13 17:15:42

1

@Override注释仅用于告诉编译器我们正在重写代码中的方法。这是用于安全目的,让编译器知道我们函数的目的(即覆盖),如果我们有任何机会重载函数,编译器将返回一个错误。因此,通过这个注释,我们可以轻松检测超载错误。

1

一些人已经提到,用错误的拼写名称捕捉潜在的错误非常有用。

我想补充一点,它 也显示哪些方法是特定于您的类,并从父类(或接口)继承的新方法。听起来可能不多,但我个人觉得它非常有用。

所以你应该总是使用@Override并配置你的IDE标记一个错误,如果你忘记了。