轉自https://zhidao.baidu.com/question/1668622526729638507.html
自定義注解,可以應用到反射中,比如自己寫個小框架。
如實現實體類某些屬性不自動賦值,或者驗證某個對象屬性完整性等
本人自己用過的驗證屬性值完整性:
@Target
(ElementType.FIELD)
@Retention
(RetentionPolicy.RUNTIME)
public
@interface
IgnoreProperty {
}
然后實體類中:
@Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface IgnoreProperty { } 然后實體類中: public class TarResearch implements Serializable{ @IgnoreProperty private static final long serialVersionUID = 1L; @IgnoreProperty private Integer researchId; @IgnoreProperty private TarUser userId; private String version; private String grade; .... } 然后action類中 // 驗證數據完整性
Class<TarResearch > userClass = TarResearch .class; Field[] field = userClass.getDeclaredFields(); for (int i = 0; i < field.length; i++) { if (field[i].getAnnotation(IgnoreProperty.class) != null) { continue; } String fie = field[i].getName().substring(0, 1).toUpperCase() + field[i].getName().substring(1); Method method = userClass.getMethod("get" + fie); Object obj = method.invoke(u); if (obj == null) { sendResponseMsg(response, "數據錯誤"); return null; } }