什么是注解?
有 检查和约束作用的功能
注解有那些?
package cim.shuang.annotation; import java.util.ArrayList; import java.util.List; //什么是注解 public class Test01 extends Object{ // @Override 重写的注解 @Override public String toString() { return super.toString(); } // @Deprecated 不推荐程序员使用,但是可以使用,或者存在更好的方式 @Deprecated public static void test(){ System.out.println("Deprecated"); } // @SuppressWarnings 镇压警告 @SuppressWarnings("all") public void test02(){ List list=new ArrayList(); } public static void main(String[] args) { test(); } }
package cim.shuang.annotation; import java.lang.annotation.*; //测试元注解 public class Test02 { } //定义一个注解 //Target 表示我们的注解可以用在那些地方 @Target(value ={ ElementType.METHOD,ElementType.TYPE} ) //Retention 表示我们的注解在什么地方还有效 //runtime>class>sources @Retention(value = RetentionPolicy.RUNTIME) //@Documented 表示是否将我们的注解生成在JAVAdao中 @Documented //@Inherited 子类可以继承父类的注解 @Inherited @interface MyAnnotation{ }
package cim.shuang.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; //自定义注解 public class Test03 { //注解可以显示赋值,如果没有默认值,我们就必须给注释赋值 @MyAnnotation2(name="123") public void test(){ } //默认为value,可以省略 @MyAnnotation3("13456") public void test2(){ } } @Target({ElementType.TYPE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @interface MyAnnotation2{ //注解的参数:参数类型+参数名(); String name() default ""; int age() default 0; int id() default -1; //如果默认值为-1,代表不存在 String [] schools() default {"西部开源","清华大学"}; } @Target({ElementType.TYPE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @interface MyAnnotation3{ String value(); }