注解
注解
Java常用的三个内置注解:
- 
@Override : 定义在Java.lang.Override中,表示覆盖父类方法;
 - 
@Deprecated : 定义在Java.lang.Deprecated中,表示不建议使用的;
 - 
@SuppressWarning : 定义在Java.lang.SuppressWarning中,抑制警告信息;
 
元注解:
- 元注解的作用就是负责注解其它注解,Java定义了4个标准的meta-annotation类型,他们被用来提供对其它annotation类型作说明。
 - 可以在Java.lang.annotation包中可以找到4个元注解,它们分别是(@Target,@Retention,@Documented,@Inherited)
- @Target : 用于描述注解的使用范围(即:被描述的注解可以用在什么地方);
 - @Retention : 表示需要在什么级别保存该注释信息,用于描述注解的生命周期(SOURCE>CLASS>RUNTIME);
 - @Documented : 说明该注解将被包含在JavaDoc中;
 - @Inherited : 说明子类可以继承父类中的该注解;
 
 
自定义注解:
- 
使用@interface自定义注解时,自动继承了Java.lang.annotation.Annotation接口;
 - 
定义注解的格式:
- 
public @interface 注解名 {定义的内容}
@Target(ElementType.METHOD) // 注解的使用范围,多个用逗号隔开 @Retention(RetentionPolicy.RUNTIME) // 注解的生命周期 SOURCE>CLASS>RUNTIME public @interface MyAnnotation{} 
 - 
 - 
注解中参数只有一个的话,参数名一般使用value
@Target({ElementType.METHOD,ElementType.FIELD}) // 注解的使用范围,多个用逗号隔开 @Retention(RetentionPolicy.RUNTIME) // 注解的生命周期 SOURCE>CLASS>RUNTIME @interface MyAnnotation{ String value(); } - 
默认值的问题
- 
没有定义默认值:
public class Test06 { @MyAnnotation(name = "张三",sex = 0) public void test01(){} } @Target({ElementType.METHOD,ElementType.FIELD}) // 注解的使用范围,多个用逗号隔开 @Retention(RetentionPolicy.RUNTIME) // 注解的生命周期 SOURCE>CLASS>RUNTIME @interface MyAnnotation{ int name(); String sex(); // 使用注解时括号内必须有值,如果不想写,我们可以在定义注解时定义一个默认值; } - 
定义了默认值:
 
public class Test06 { @MyAnnotation public void test01(){} } @Target({ElementType.METHOD,ElementType.FIELD}) // 注解的使用范围,多个用逗号隔开 @Retention(RetentionPolicy.RUNTIME) // 注解的生命周期 SOURCE>CLASS>RUNTIME @interface MyAnnotation{ int name() default 0; String sex() default ""; // 使用注解时括号内必须有值,如果不想写,我们可以在定义注解时定义一个默认值; } - 
 
我们如何读取注解呢?我们可以通过反射机制!

                
            
        
浙公网安备 33010602011771号