先说一下 field 和 variable 之间的区别:
class variables and instance variables are fields while local variables and parameter variables are not. All fields are variables.
成员变量(field)是指类的数据成员,而方法内部的局部变量(local variable)、参数变量(parameter variable)不能称作 field。field 属于 variable,也就是说 variable 的范围更大。
所以:
在java的注解中Target的部分,可以设置为
ElementType.FIELD
或者
ElementType.LOCAL_VARIABLE
package simpletest;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 注解可以是在
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
* 宝宝输入的,呵呵
*
*
*
*
*
*/
/**
* 注意FIELD是注解类变量和实例变量的,而LOCAL_VARIABLE是注解的局部变量的,这个就涉及到Field和Variable的区别了
* 先说一下 field 和 variable 之间的区别:
*
* class variables and instance variables are fields while local variables and parameter variables are not. All fields are variables.
*
* 成员变量(field)是指类的数据成员,而方法内部的局部变量(local variable)、参数变量(parameter variable)不能称作 field。field 属于 variable,也就是说 variable 的范围更大。
*/
@Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD,ElementType.LOCAL_VARIABLE})
//@Target({ElementType.LOCAL_VARIABLE,ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
/**
* 注解:描述,包括描述,作者,和年龄
*/
public @interface Description {
String desc();
String auth();
int age() default 18;
}
package simpletest;
@Description(desc = "I am Class annotation", auth = "workder")
public class Worker implements People {
//annotation 必须添加Target设置ElementType.FIELD
@Description(desc = "I am field anntation", auth =" workder")
public String field;
@Description(desc = "I am method anntation",auth = "worker")
@Override
public void work() {
//局部变量的注解, 必须添加target的设置 ElementType.LOCAL_VARIABLE
@Description(desc = "I am local_variable annotation",auth = "kodulf")
int local_variable;
}
@Override
public void sleep() {
}
@Deprecated
@Override
public void eat() {
}
/*
没有这个接口的话,override的会报错的
@Override
public void hello(){
}
*/
}