annotation 例子

@Retention : RetentionPolicy. SOURCE,CLASS,RUNTIME
@Target :ElementType.TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE,ANNOTATION_TYPE,PACKAGE

@Retention(RetentionPolicy.RUNTIME)
@Target(value = ElementType.FIELD)
public @interface In {

/**
* 范围
*
* @return
*/
String scope();

/**
* 值
*
* @return
*/
String value();
}



@Retention(RetentionPolicy.RUNTIME)
@Target(value = ElementType.TYPE)
public @interface UserInfo {

String name();

String age();
}



@UserInfo(name = "sefer", age = "27")
public class User {

@In(scope = "request", value = "hangzhou")
String address;

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}
}



public class GetUser {

public static void main(String[] args) {
AnnotatedElement an = User.class;
boolean isUserInfo = an.isAnnotationPresent(UserInfo.class);

if (isUserInfo) {
UserInfo userInfo = an.getAnnotation(UserInfo.class);
String name = userInfo.name();
String age = userInfo.age();
System.out.println("name: " + name);
System.out.println("age: " + age);
}

User user = new User();

Field[] fields = user.getClass().getDeclaredFields();

for (Field field : fields) {
// 重要:避免java虚拟机检查对私有成员的访问权限
field.setAccessible(true);
boolean isIn = field.isAnnotationPresent(In.class);
if (isIn) {
In in = field.getAnnotation(In.class);
System.out.println(field.getName() + "value: " + in.value());
System.out.println(field.getName() + " save scope: "
+ in.scope());

}
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值