自定义注解和使用()

格式:

public @interface 注解名 {

  public 属性类型 属性名  ()  default 默认值; //如果不想给默认值,default可以省略

}

package anno;

// 在使用注解的时候,如果注解里面的属性没有默认值,那么使用它的时候需要设置属性值,如果注解中只有value这一个属性没有设置默认值,在使用时可value可以省略不写,直接写值即可
@Annotation(name = "anno", seasons = {Season.SPRING, Season.WINTER})
public class AnnotationDemo {

}

/**
 * 自定义注解
 */
public @interface Annotation {

    // 定义一个基本类型的属性
    public int a() default 10;

    // 定义一个String类型的属性
    public String name();
    
    // 定义一个Class类型的属性
    public Class clazz() default Student.class;

    // 定义一个注解类型的属性
    public Anno anno() default @Anno;

    // 定义一个枚举类型的属性
    public Season season() default Season.AUTUMN;

    // 定义一个以上类型的数组
    // int数组
    public int[] arr() default {1, 2, 3, 4, 5};
    // 枚举数组
    public Season[] seasons();

}

public enum Season {
    SPRING,SUMMER,AUTUMN,WINTER;
}

public class Student {

}

public @interface Anno {

}
————————

格式:

public @interface 注解名 {

  public 属性类型 属性名  ()  default 默认值; //如果不想给默认值,default可以省略

}

package anno;

// 在使用注解的时候,如果注解里面的属性没有默认值,那么使用它的时候需要设置属性值,如果注解中只有value这一个属性没有设置默认值,在使用时可value可以省略不写,直接写值即可
@Annotation(name = "anno", seasons = {Season.SPRING, Season.WINTER})
public class AnnotationDemo {

}

/**
 * 自定义注解
 */
public @interface Annotation {

    // 定义一个基本类型的属性
    public int a() default 10;

    // 定义一个String类型的属性
    public String name();
    
    // 定义一个Class类型的属性
    public Class clazz() default Student.class;

    // 定义一个注解类型的属性
    public Anno anno() default @Anno;

    // 定义一个枚举类型的属性
    public Season season() default Season.AUTUMN;

    // 定义一个以上类型的数组
    // int数组
    public int[] arr() default {1, 2, 3, 4, 5};
    // 枚举数组
    public Season[] seasons();

}

public enum Season {
    SPRING,SUMMER,AUTUMN,WINTER;
}

public class Student {

}

public @interface Anno {

}