伪代码,所以是可写可不写的。它表示方法重写,写上的好处如下:
1.可以当注释用,方便阅读.
2.告诉阅读你代码的人,这是方法的复写.
3.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错
作用:表示这个方法或类不再建议使用。在新版本中有其他方法或类可以代替这个使用,以后的版本也不会再更新这个方法或类。
Java 9改进了该注解,该注解支持since、forRemoval两个属性。
forRemoval - 指示注释的元素是否在将来的版本中被删除。默认值是false。
以下Java 9上的布尔类javadoc
示例说明了在@Deprecated
注释中使用since
属性。
Boolean类since属性的使用示例 - https://docs.oracle.com/javase/9/docs/api/java/lang/Boolean.html#Boolean-boolean-
since -返回注释元素已过时的版本。 默认值是空字符串。
Java 9上的System
类javadoc的以下示例说明了在@Deprecated
注释中使用forRemoval
属性。
作用:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。
作用范围:可以标注在类、字段、方法、参数、构造方法,以及局部变量上。
使用方式:@SuppressWarnings(“”)@SuppressWarnings({})@SuppressWarnings(value={})
根据sun的官方文档描述:
value -将由编译器在注释的元素中取消显示的警告集。允许使用重复的名称。忽略第二个和后面出现的名称。出现未被识别的警告名不是错误:编译器必须忽略无法识别的所有警告名。但如果某个注释包含未被识别的警告名,那么编译器可以随意发出一个警告。
各编译器供应商应该将它们所支持的警告名连同注释类型一起记录。鼓励各供应商之间相互合作,确保在多个编译器中使用相同的名称。
示例:
· @SuppressWarnings("unchecked")
告诉编译器忽略 unchecked 警告信息,如使用List,ArrayList等未进行参数化产生的警告信息。
· @SuppressWarnings("serial")
如果编译器出现这样的警告信息:The serializable class WmailCalendar does notdeclare a static final serialVersionUID field of type long
使用这个注释将警告信息去掉。
· @SuppressWarnings("deprecation")
如果使用了使用@Deprecated注释的方法,编译器将出现警告信息。
使用这个注释将警告信息去掉。
· @SuppressWarnings("unchecked", "deprecation")
告诉编译器同时忽略unchecked和deprecation的警告信息。
· @SuppressWarnings(value={"unchecked", "deprecation"})
等同于@SuppressWarnings("unchecked", "deprecation")
参考http://blog.sina.com.cn/s/blog_ad8b5870010166vt.html
作用:Java6-Java7新增加的注解。优化变长参数的方法调用,为解决可变参数长度与泛型一起使用的情况下,编译器出现告警过多的问题。
作用范围:参数长度可变的方法(或构造方法) 且 方法必须声明为static或final,否则会出现编译错误。
使用前提:需确保这个方法的实现中对泛型类型参数的处理不会引发类型安全问题。
如果参数传递的是不可具体化(non-reifiable)的类型,如List
这其中的原因是可变长度的方法参数的实际值是通过数组来传递的,而数组中存储的是不可具体化的泛型类对象,自身存在类型安全问题。因此编译器会给出相应的警告信息。
参考:http://book.51cto.com/art/201205/339154.htm
作用:该注解不是必须的,如果一个接口符合"函数式接口"定义,那么加不加该注解都没有影响。加上该注解能够更好地让编译器进行检查。如果编写的不是函数式接口,但是加上了@FunctionInterface,那么编译器会报错。
作用范围:只能作用于“函数式接口定义”。“函数式接口定义”指仅仅包含一个抽象方法的接口,如下:
“函数式接口定义”:
1、该注解只能标记在"有且仅有一个抽象方法"的接口上。
2、JDK8接口中的静态方法和默认方法,都不算是抽象方法。
3、接口默认继承java.lang.Object,所以如果接口显示声明覆盖了Object中方法,那么也不算抽象方法。
正确的"函数式接口定义",如下:
// 正确的函数式接口 @FunctionalInterface public interface TestInterface { // 抽象方法 public void sub(); // java.lang.Object中的方法不是抽象方法 public boolean equals(Object var1); // default不是抽象方法 public default void defaultMethod(){ } // static不是抽象方法 public static void staticMethod(){ }参考:https://blog.csdn.net/aitangyong/article/details/54137067