注解与注释是有区别的
@Override:重写的注解
@Functionalnterface:函数接口注解
@Deprecated:已废弃注解
@SuppressWarnings(valu=“unchecked”):易执行的
@SuppressWarnings(“all”):镇压警告,系统警告消失
@Target({TYPE,FIELD,METHOD,PARMETER,CONSTRUCTOR,LOCAL_VARIABLE}):目标类型,使用范围
//元注解测试 @MyAnnotation public class TestAnnotation { @MyAnnotation public static void main(String[] args) { } } // 定义一个注解 //@Target:规定注解可以使用的类型范围 //TYPE:类,METHOD:方法,Annotation_TYPE:注解类型 //Construct:构造器,FIELD:字段,PARAMETER:参数,LOCAL_VARIABLE:本地变量,PACKAGE:包类型 @Target({ElementType.TYPE,ElementType.METHOD}) //表示我们的注解在什么时候还有效 RunTIME>class>sources @Retention(value = RetentionPolicy.RUNTIME) //表示是否将我们的注解声明在JAVAc文件中 @Documented //说明子类可以继承父类的该注解 @Inherited @interface MyAnnotation{ }
ElementTYPE:对象类型
public class TestAnnotation { //有默认值的参数可以不写使用默认值,没有默认值的参数必须赋值 @MyAnnotation2(name="史佳豪",money = 1000,has = {12,13}) @MyAnnotation3(5) public static void main(String[] args) { } } //注解中定义参数 @Target(ElementType.METHOD) @Inherited @Retention(RetentionPolicy.RUNTIME) @Documented @interface MyAnnotation2{ // 参数定义:参数类型 + 参数名 +()选+ default+默认值 +; String name(); String sex() default "MAN"; int age()default 18; int money(); int[] has();//定义一个int类型的数组参数 } @Target(ElementType.METHOD) @Inherited @Retention(RetentionPolicy.RUNTIME) //当只有一个参数时参数名应使用value,这样在注解添加参数时可以不写参数名,直接赋值 @interface MyAnnotation3{ int value (); }