场景:给商品对象的名称注解,当商品名称为空的时候使用注解的默认名称。
步骤一:定义一个注解,eclispe下可以右键新建一个annotation。
package com.fengshu.Spring.util;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface DefaultProductName { String defaultName() default "";}
步骤二:编写一个注解处理器
package com.fengshu.Spring.util;import java.lang.reflect.Field;public class ProductInfoUtil { public static String getProductDefaultName(Class clazz) { String productName = ""; Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { if (field.isAnnotationPresent(DefaultProductName.class)) { DefaultProductName pro = (DefaultProductName) field.getAnnotation(DefaultProductName.class); productName = pro.defaultName(); break; } } return productName; }}
步骤三:使用
package com.fengshu.Spring.util;public class Product { @DefaultProductName(defaultName = "运动鞋") private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public static void main(String[] args) { Product product = new Product(); if (product.getName() == null) { product.setName(ProductInfoUtil.getProductDefaultName(Product.class)); } System.out.println(product.getName()); }}
如上可成功打印出默认商品名称