注解基本概念
①内置注解
package cn.ecut.annotation;
//@SuppressWarnings镇压警告
@SuppressWarnings("all")
public class Test01 {
public static void main(String[] args) {
test();
}
//@Override 重写的注解
@Override
public String toString() {
return super.toString();
}
//@Deprecated 不推荐程序员使用,或者存在更好的方式
@Deprecated
public static void test(){
System.out.println("Deprecated");
}
}
②元注解
package cn.ecut.annotation;
import java.lang.annotation.*;
public class Test02 {
public static void main(String[] args) {
}
}
//定义一个注解 Target Retention Documented Inherited 属于元注解
@Target(value = {ElementType.METHOD,ElementType.TYPE})//Target 表示注解可以用在什么地方
@Retention(value = RetentionPolicy.RUNTIME)//Retention 表示注解在什么地方还有效 SOURCE<CLASS<RUNTIME
@Documented//Documented 表示是否将注解生成JAVADOC文档中
@Inherited//Inherited 表示子类可以继承父类的注解
@interface MyAnnotation{
}
③自定义注解
package cn.ecut.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
public class Test03 {
@MyAnnotation01(name = "Yu",id = 10)
public void test01(){}
//当注解只有一个参数且那个参数是String value()时 默认为value=""
@MyAnnotation02("")
public void test02(){}
}
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation01{
//注解的参数:参数类型+参数名();
String name() default "";
int age() default 20;
int id() default 10;
String[] schools() default {"东华理工大学","南昌大学"};
}
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation02{
String value();
}