注解
分类 --jdk提供的五个注解,常用的@Override
--元注解五个,常用的是@Target / @Retention
--通常配合元注解完成自定义注解
@Target
--用来指定 注解可以出现的位置
--比如出现在: 类上,方法上,成员变量上,局部变量上...
--值被维护在了工具类 ElementType.class
@Retention
--用来指定 注解的生命周期
--比如: .java文件中 .class文件中 runtime时
--值被维护在了工具类 RetentionPolicy.class
自定义注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//测试 注解
public class Test4 {
}
//第一步,@interface定义注解 -- 语法和java不太一样
//1,@Target--描述注解可以出现的位置--ElementType
//2,@Retention--描述注解的生命周期--RetentionPolicy
//@Target( ElementType.FIELD } )//FIELD表示可以出现在成员变量上
@Target({ ElementType.FIELD , ElementType.METHOD })//可以 同时出现在 多个位置上
@Retention(RetentionPolicy.SOURCE)//SOURCE表示可以在.java文件中存在
@interface Controller{
//3,给注解添加功能--属性
// String name() default ""; //4,给属性设置默认值
String name();//5,属性没有默认值, 就要求使用时必须赋值了...
}
//第二步,使用注解 @Controller
//@Controller//1, 报错,出现在了错误的位置
class Hello{
@Controller(name="name属性要用")//6,给name属性赋值
String name;
@Controller(name="show()")
public void show(int a){
System.out.println(a);
}
}