package com.wcs.annotation;
/**
* 注解,或者叫做注释类型:Annotation
* 注解Annotation是一种引用数据类型,编译之后也是生成class文件
* 自定义注解
* [修饰符列表] @interface 注解名{}
*/
public class AnnotationTest01 {
@MyAnnotation
private int no;
@MyAnnotation
public AnnotationTest01() {
}
@MyAnnotation
public static void m1() {
}
}
@MyAnnotation
interface MyInterface {
}
package com.wcs.annotation;
/**
* 自定义注解
* 注解使用时的语法格式:@注解类型名
* 注解可以出现在类上、属性上、方法上、变量上
* 注解还可以出现在注解类型上。
*/
public @interface MyAnnotation {
/**
* 在注解中可以定义属性
* 看着想一个方法,实际上是属性name
*/
String name();
int age() default 25;//属性指定默认值
}
package com.wcs.annotation;
/**
* @author wcs
* @create 2021-08-22 16:42
*/
public class MyAnnotationTest {
//报错原因:注解当中有属性,必须给属性赋值(除非该属性使用default指定了默认值)
// @MyAnnotation()
// public void m1(){
//
// }
//给属性赋值
@MyAnnotation(name = "jack")
public void m1() {
}
}
public @interface MyAnnotation {
//指定一个value属性
String value();
}
public class MyAnnotationTest {
//报错原因:没有给属性赋值
// @MyAnnotation()
// public void m1(){
//
// }
@MyAnnotation(value = "okok")
public void m1() {
}
//如果属性是value,可以省略属性名
@MyAnnotation("okok")
public void m2() {
}
}
如果一个注解的属性的名字是value,并且只有一个属性的话,在使用的时候,该属性名可以省略