java中的field 和 variable的理解,java注解中的ElementType.FIELD和ElementType.LOCAL_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 的范围更大。

 

所以:

在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(){

    }
    */
}

 

 

 

参考:http://www.ituring.com.cn/article/491755

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值