2012-06-11 36 views
1

我想爲我的bean編寫自己的驗證器和代碼生成器。我定義了註釋並註釋了他們的字段。當我確認他們:自定義註解驅動開發

public boolean validate(Object obj) { 
    Class clazz = obj.getClass(); 
    for (Field field : clazz.getDeclaredFields()) { 
     for (Annotation annotation : field.getAnnotations()) { 
      ...//What to do here 
     } 
    } 
    return false; 
} 

即我的註釋是@NotEmpty

我應該去像if else if else ...還是有它(任何其他短的方式和用什麼來比較的是,註釋,我看即@NotNull - >與annotation.equals(「NotNull」))?我的意思是它如何實施。在另一方面項目龍目島這樣的註解:我的課(我只想使用Java來實現它沒有任何其他庫)

@Getter @Setter 

如何生成getter和setter方法動態(或編譯前)?

+0

** Lombok **,不是Lombak! - 我今天第二次看到這個 – dantuch

回答

2

我想你最好搜索一下你需要的註釋,而不是循環所有的註釋。你可以看到,如果一個註釋存在這樣的:

field.isAnnotationPresent(NotEmpty.class) 

而獲得註釋,並檢查它的元素,你可以使用:

Annotation notEmpty = field.getAnnotation(NotEmpty.class) 

要在運行時修改類我覺得this是你正在尋找。 Here你可以找到ASM的教程。

+0

很好。如何用反射生成代碼? – kamaci

+0

請檢查更新的答案 – tibtof