Annotation简介
Annotation是java引入的新特性
JDK的5.0版引入了元数据功能。称为注释。注释提供的程序数据不是该程序的一部分,例如,命名一段代码的作者或指示编译器抑制特定错误。注释对代码的执行没有影响。
注释使用@annotation形式,并且可以应用于程序的声明:其类,字段,方法等。
元数据描述数据的数据
JDK5发布了Metedata(元数据)很容易的就能够调用Annotations.Annotations提供一些本来不属于程序的数据,例如:一段代码的作者或者告诉编译器禁止某些特殊的错误。Annotation对代码的执行没有什么一个注释出现在上面提到的开始位置,而且通常只有一行,也可以包含有任意的参数。
精确覆写
@Override
可以精确的覆写父类方法,除非父类方法是私有的,或者在子类中的方法和父类中的方法不一致就会导致编译报错
使用方法:
public class Person {
public void show(){
System.out.println("父类");
}
}
class Teacher extends Person {
@Override
public void show(){
System.out.println("子类");
}
}
class Test {
public static void main(String[] args) {
Teacher teacher = new Teacher();
teacher.show(); //重写 输出子类方法
}
}
这样就可以很好的覆写了,不用担心方法名字不一致和忘记用extends去继承了。
过期声明
@Deprecated
可以用来当做新老系统交替,可以在项目中让别人很容易分出那个是新系统用的那个是老系统用的。
使用方式:
public class Person {
@Deprecated
public void show(){
System.out.println("父类");
}
}
class Teacher extends Person {
public void show(){
System.out.println("子类");
}
}
class Test {
public static void main(String[] args) {
Person p = new Person();
p.show(); //在调用方法的时候加上了一条删除线
}
}
p.show () 在代码中就会这样显示,所以用来交替新老系统是最好的
压制警告
@SuppressWarnings(““)
在外面写代码的时候写着写着就可能会发出一些警告,警告是编译时检查发现不符合一些常用约定,当然我们也可以把警告给去掉就是用@SuppressWarnings注释
使用方法:
class Test {
@SuppressWarnings("unused") //压制没有被使用的警告
public static void main(String[] args) {
Person p = new Person();
}
}
参数:
- all to suppress all warnings (压制所有警告)
- boxing to suppress warnings relative to boxing/unboxing operations(压制装箱、拆箱操作时候的警告)
- cast to suppress warnings relative to cast operations (压制映射相关的警告)
- dep-ann to suppress warnings relative to deprecated annotation(压制启用注释的警告)
- deprecation to suppress warnings relative to deprecation(压制过期方法警告)
- fallthrough to suppress warnings relative to missing breaks in switch statements(压制确在switch中缺失breaks的警告)
- finally to suppress warnings relative to finally block that don’t return (压制finally模块没有返回的警告)
- hiding to suppress warnings relative to locals that hide variable(压制相对于隐藏变量的局部变量的警告)
- incomplete-switch to suppress warnings relative to missing entries in a switch statement (enum case)(忽略没有完整的switch语句)
- nls to suppress warnings relative to non-nls string literals(忽略非nls格式的字符)
- null to suppress warnings relative to null analysis(忽略对null的操作)
- rawtypes to suppress warnings relative to un-specific types when using generics on class + + params(使用generics时忽略没有指定相应的类型)
- restriction to suppress warnings relative to usage of discouraged or forbidden references
- serial to suppress warnings relative to missing serialVersionUID field for a serializable class(忽略在serializable类中没有声明serialVersionUID变量)
- static-access to suppress warnings relative to incorrect static access(压制不正确的静态访问方式警告)
- synthetic-access to suppress warnings relative to unoptimized access from inner classes(压制子类没有按最优方法访问内部类的警告)
- unchecked to suppress warnings relative to unchecked operations(压制没有进行类型检查操作的警告)
- unqualified-field-access to suppress warnings relative to field access unqualified (压制没有权限访问的域的警告)
- unused to suppress warnings relative to unused code (压制没被使用过的代码的警告)