定义注解接口
FruitProvider注解接口,name和address两个属性
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FruitProvider {
public int id() default -1;
public String name() default "";
public String address() default "";
}
使用注解接口
定义了Apple类,通过注解方式定义了一个FruitProvider
public class Apple {
@FruitProvider (id = 1, name = "山东红富士集团", address = "山东省烟台市");
private String appleProvider;
public void setAppleProvider(String appleProvider) {
this.appleProvider = appleProvider;
}
public String getAppleProvider() {
return appleProvider;
}
}
定义注解处理器
public class FruitInfoUtil {
public static void getFruitInfo(Class<?> clazz) {
String strFruitProvicer = "供应商信息:";
Field[] fields = clazz.getDeclaredFields();
for(Field field : fields) {
if(field.isAnnotationPresent(FruitProvider.class)) {
FruitProvider fruitProvider = (FruitProvider)
field.getAnnotation(FruitProvider.class);
strFruitProvicer += "供应商编号: "+ fruitProvider.id() +"供应商名称: "+
fruitProvider.name() +"供应商地址: "+ fruitProvider.address();
System.out.println(strFruitProvicer);
}
}
}
}
public class FruitRun {
public static void main(String[] args) {
FruitInfoUtil.getFruitInfo(Apple.class);
}
}