在java或Android中有@Override注释。这是什么意思?我发现它用于方法是从子类或继承的接口的方法,我想进一步知道和其他是@SuppressWarnings它也Anonation,如果是的Java多少使用的annonation和为此目的。为什么@Override需要在Java或Android?
回答
这个问题也回答了这里,而且相当简洁: Android @Override usage
这是一个注释,你可以用它来告诉你打算是有注释是一个覆盖的方法编译器和您的IDE超类方法。他们在出现错误时会有警告/错误,例如,如果您打算重写某个方法但拼写错误,如果注释位于IDE中,或者编译器会告诉您它实际上不覆盖超类方法,因此您可以确定原因并更正拼写错误。
这对于Android应用程序和活动来说更为重要,例如,所有调用都将基于活动生命周期 - 并且如果您没有正确覆盖生命周期方法,则它们永远不会被框架调用。一切都会很好地编译,但你的应用程序不会按照你的意图工作。如果添加注释,则会出现错误。
换句话说,如果添加@覆盖这可以帮助你做出确保你是真的覆盖现有的方法!相当有用。
准确,强调的那样,注释实际上并不在运行时做任何事情,它是谁的阅读代码的帮助。如果签名与父项相同,该方法将被覆盖或不注释。 – stivlo 2011-12-17 15:09:32
@stivlo:没有。如果设置了Override,并且该方法不会覆盖任何内容,则不会有任何运行时,因为它会阻止该类进行编译。这就是为什么注释是有用的:它告诉编译器开发人员的意图是重写一个方法。如果编译器检测到没有重写,它将拒绝编译。 – 2011-12-17 15:33:10
注释是否有用于防止重复的方法相同? – 2013-05-27 10:02:42
覆盖意味着您正在更改从父类继承的方法的行为,而不更改签名。 @Override注释用于标记此。它与多态的概念紧密相关。例如:
public class A {
public void foo() {
System.out.println("A");
}
}
public class B extends A {
@Override
public void foo() { // I want to change the way foo behaves
System.out.println("B"); // I want to print B instead of A
}
}
public static void main(String[] args) {
A a = new A();
a.foo(); // prints A
A b = new B(); // I can use type B because it extends A
b.foo(); // I have overriden foo so it prints B now
}
行为意味着我不能改变参数和返回类型 – 2011-12-17 15:00:03
@Mayur Patel:是的,只有方法内的代码。 – Tudor 2011-12-17 15:01:27
Thnx这么多的规格 – 2011-12-17 15:03:11
只是为了确保您实际上在编译时覆盖它,并提高可读性
例如:
class Animal{
public void eat(Food food){
}
}
class Person extends Animal {
@Override
public void eat(String food){
}
}
这会给你编译因为你不是实际上覆盖它(参见食物的类型)
我们可以覆盖当前类方法? – 2011-12-17 15:00:35
给我一个例子你是什么意思的当前类方法 – 2011-12-17 15:01:56
我知道,但我删除它什么是prblm?其跌幅可读性 – 2011-12-17 15:04:05
@override其注释,即元数据在jdk 1.6中引入。如果你在override方法之前不写它,它不会有什么区别,但它只是用来增加编译器的可读性。
1.5中引入了包含'@ Override'的注解。目的是确保你实际上覆盖了你认为自己的东西,而不是“增加编译器的可读性”。 – 2011-12-17 15:07:45
标记您确实实施或更改方法。就像在编译时检查一样。例如,如果您要实施@Override public void equals(final Car pObject);
而不是@Override public void equals(final Object pObject);
,则会出现错误。
除了其他详细信息,还有其他详细信息:@Override和@SuppressWarnings来自Java规范。
这听起来像你的问题是关于一般注释更多,所以我会回答。注释提供有关正在注释的项目的额外元数据。这允许其他代码使用该信息来决定如何运行。 More detailed description。语言中有大量的内容,但你可以自己写。你给
两个例子告诉它编译代码编译器的额外信息。当它看到@Override
时,它会检查以确保该方法实际上覆盖了一个方法。当它看到@SuppressWarnings
时,它知道它应该忽略代码块中存在的给定类型的编译器警告。
他们可以在户外使用的编译器为好。有许多库可以注释一个类对象,并使用该元数据构建数据库或解析xml文件。
- 1. 在Java中@Override是什么?
- 2. 在java中有什么“@Override”?
- 3. 为什么android需要jvm
- 4. extjs combo override:为什么要定义this.addevents()?
- 5. 为什么在java中需要接口?
- 6. 为什么需要[super loadView]或[super viewDidLoad]?
- 7. 为什么我们需要calloc(或malloc)?
- 8. 为什么你需要Gitosis或Gitolite?
- 9. 为什么我需要jdbc与sqlite java?
- 10. 为什么Java发送需要Thread.Sleep
- 11. 为什么我们需要Java NIO Selector?
- 12. Java:为什么需要包装类?
- 13. 为什么JAVA需要构造函数?
- 14. 为什么Java中需要易失性
- 15. 我需要为Java RandomUtils包含什么?
- 16. 为什么需要Java线程?
- 17. 为什么需要
- 18. 为什么需要“{} \”?
- 19. Android为什么需要虚拟机(DVM)?
- 20. Gracenote Android - 为什么需要ACCESS_FINE_LOCATION?
- 21. 为什么android:描述需要?
- 22. 为什么PocketSphinx Android演示需要cygwin
- 23. 为什么Android SDK需要JDK?
- 24. Android/Tensorflow:为什么需要测试RandomShuffleQueue?
- 25. 为什么java需要Class.forName或动态加载?
- 26. 为什么在Django中需要基本或摘要认证?
- 27. 邮件服务器,为什么需要在smtp.mail.com或imap.mail.com或mail.mail.com
- 28. 为什么或什么时候应用需要服务器?
- 29. 为什么我需要在Java中为此数组添加+1?
- 30. 为什么在Android Studio中清理需要这么长时间
这是一个好问题,而是......琐碎的查找。 – 2011-12-17 15:08:38