package com.yms.anno;
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;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Indexed;
/**
* @author yms
* @description:
* @date: 2021/9/17 9:48
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Documented
@Component
@Indexed
public @interface OCRAnnotation {
String value() default "";
String name() default "";
String code() default "";
}
package org.yms.test;
import com.yms.anno.OCRAnnotation;
import com.yms.ocr.OcrTicketVo;
import com.yms.ocr.OcrTrainTicketVo;
import java.lang.reflect.Field;
import java.util.Map;
/**
* @author yms
* @description:
* @date: 2021/9/17 18:19
*/
public class OCRTest {
private OcrTicketVo setFields(Map<String,Object> trainMap){
OcrTrainTicketVo train = new OcrTrainTicketVo();
//getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。
//getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。
Field[] vatFields = train.getClass().getDeclaredFields();
for (Field field : vatFields) {
//判断该属性有没有被@OCRAnnotation标注
if(field.isAnnotationPresent(OCRAnnotation.class)){
String key = field.getAnnotation(OCRAnnotation.class).value();
if(trainMap.containsKey(key)){
field.setAccessible(true);
try {
field.set(train,trainMap.get(key));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
return train;
}
}