annotation 例子

本文介绍了一个使用Java注解的例子,展示了如何定义自定义注解、如何应用这些注解到类和字段上,以及如何通过反射读取注解信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@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());

}
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值