java 自定义annotation

自定义annotation 包含2部分

1 自定义注解

2 自定义注解处理器

 

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface FruitColor {

 

public enum Color {

BLUE, RED, GREEN

};

 

Color fruitColor() default Color.RED;

}

ElementType 有FIELD,METHOD等等

 

 

public class Apple {

 

@FruitName(name = "apple")

private String fruitName;

 

@FruitColor(fruitColor = Color.RED)

private String fruitColor;

 

@FruitProvider(id = 1, name = "a", address = "a b c")

private String appleAddress;

 

public String getFruitName() {

return fruitName;

}

 

public void setFruitName(String fruitName) {

this.fruitName = fruitName;

}

 

public String getFruitColor() {

return fruitColor;

}

 

public void setFruitColor(String fruitColor) {

this.fruitColor = fruitColor;

}

 

public String getAppleAddress() {

return appleAddress;

}

 

public void setAppleAddress(String appleAddress) {

this.appleAddress = appleAddress;

}

 

}

 

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface FruitProvider {

 

public int id() default -1;

 

public String name() default "";

 

public String address() default "";

}

 

 

 

public class FruitInfoUtil {

 

public static void getFruitInfo(Class<?> clazz) {

 

String strFruitName = " 水果名称:";

String strFruitColor = " 水果颜色:";

String strFruitProvicer = "供应商信息:";

 

Field[] fields = clazz.getDeclaredFields();

 

for (Field field : fields) {

if (field.isAnnotationPresent(FruitName.class)) {

FruitName fruitName = (FruitName) field.getAnnotation(FruitName.class);

strFruitName = strFruitName + fruitName.name();

System.out.println(strFruitName);

} else if (field.isAnnotationPresent(FruitColor.class)) {

FruitColor fruitColor = (FruitColor) field.getAnnotation(FruitColor.class);

strFruitColor = strFruitColor + fruitColor.fruitColor().toString();

System.out.println(strFruitColor);

} else if (field.isAnnotationPresent(FruitProvider.class)) {

FruitProvider fruitProvider = (FruitProvider) field.getAnnotation(FruitProvider.class);

strFruitProvicer = " 供应商编号:" + fruitProvider.id() + " 供应商名称:" + fruitProvider.name() + " 供应商地址:" + fruitProvider.address();

System.out.println(strFruitProvicer);

}

}

}

 

public static void main(String[] args) {

getFruitInfo(Apple.class);

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值