1.注解
jdk1.5后出的新特性,是一种代码级别的说明。是一种元数据, 注解在Java中以 "@注解名" 的方式呈现。
2.JDK内置的常用注解:
@Override 表示覆盖或重写父类的方法;
@Deprecated 表示该方法已经过时了。(当方法或是类上面有@Deprecated注解时,说明该方法或是类都已经过期不能再用,但不影响以前项目使用,提醒你新替代待的方法或是类。如果程序员不小心使用了它的元素,那么编译器会发出警告信息。)
@SuppressWarnings 表示忽略指定警告,比如@Suppvisewarnings("Deprecation")
2. 自定义注解
(1) 自定义注解
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.LOCAL_VARIABLE;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}
(2) 测试自定义注解
/*
* 注解:jdk1.5后出的新特性。是一个代码级别的说明。是一个元数据
* 在java中注解以 "@注解名" 的方式呈现
*
*
* 1. JDK内置的常用注解
* @Override: 用于注解方法,说明该方法必须是重写方法
* @Deprecated : 用于注解属性、方法、类,说明已经过时
* @SuppressWarnings :用于抑制编译器警告
*
* 2. 自定义注解
*
* public @interface MyAnnoataion{}
*
* 3. 元注解
* @Retention : 描述注解的声明周期
* @Target: 描述注解可以修饰哪些程序元素
* @Documented : 描述注解可以随之生成说明文档
* @Inherited: 描述注解可以被继承
*/
public class TestAnnotation {
public static void main(String[] args) {
Person1 p = new Person1();
p.sleep();
//@SuppressWarnings("rawtypes")
// List list = new ArrayList();
// System.out.println(list);
}
}
class Person1 {
@Deprecated
private String name;
private int age;
public Person1() {
}
public Person1(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void sleep(){
System.out.println("睡觉");
}
}
@MyAnnotation
class Student extends Person1{
@Override
public void sleep(){
System.out.println("聂同学站着睡");
}
}
3. 元注解:描述注解的注解
@Retention : 描述注解的生命周期
@Target: 描述注解可以修饰哪些程序元素
@Documented : 描述注解可以随之生成说明文档
注意:声明周期是 RUNTIME
@Inherited: 描述注解可以被继承