`

java 自定义annotation

    博客分类:
  • java
 
阅读更多

自定义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);

}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics