一.什么是注解:
Annotation是从JDK 5.0开始引入的新技术.
Annotation的作用:
1.不是程序本身,可以对程序做出解释.(这一点和注释(comment)没有什么区别).
2.可以被其他程序读取.
Annotation的格式:
注解的格式为"@+注释名",还可以加一些参数值,
例如: @SuppressWarnings(value = “unchecked”)
这就是一个重写注解,重写的是父类Object中的toString方法:
当我们使用重写的注解时,重写的方法名就必须与父类的方法名一致,不然注解就会报错,比如:
Annotation在哪里使用?
可以附加在package,class,method,filed等上面,相当于给他们添加了额外的辅助信息
二.内置注解:
1.@Override:定义在java.lang.Override中,此注解只适用于方法中,是一个方法重写父类中的另一个方法的声明.
2.@Deprecated:定义在java.lang.Deprecated中,此注解适用于方法,属性,类中,表示不鼓励程序员使用这样的元素,通常是因为它有危险或者存在更好的选择,但是可以使用.
从下面的代码中我们可以看到有该注解的方法运行还是没有问题的.
3.@SuppressWarnings:定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息.与前两个的注解有所不同,你需要传入一个或多个参数才能正确使用,这些参数是已经定义好的.
好了,当我们了解这个注解的作用后,让我们在了解一下什么是警告:
由下面这个代码可以看出来,我们的idea给我们报出了3个警告,这三个警告分别是,我们的类Annotationtext1, 类中的方法text1(),text1()方法中的定义的数组a它们三个都没有被使用过,这就造成了资源浪费,我们可以发现它们的名字颜色都变成了灰色,这也是idea在提醒我们,我们可以通SuppressWarnings注解来镇压他们.
当我们使用了@SuppressWarnings注解后,我们可以看到这些警告都消失了.
注解里面的参数"all"我们下一步就会讲到是什么意思.
当然了,我们介绍@SuppressWarnings注解时,我们也说它需要传一些已经定义好的参数,接下来,让我们看看都有哪些参数以及这些参数的作用是什么.
让我们先进入SuppressWarnings的源码中看一看:
package java.lang;
import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})//目标,表示该注解可以用在类型,字段,方法,构造器等等中;
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value(); //这个是一个参数,其中value是参数名,String是参数的类型
}
这里我还是建议一下大家,平时练习写代码时还是不要把警告镇压了,除非大家看这些警告都已经不耐烦了,还是可以使用这个注解的.



