我可以爲方法指定一個方法嗎?當它的參數爲空時,什麼都不做,因爲沒有被調用?編寫註釋以防止參數無效時調用方法
1
A
回答
3
可能最簡單的方法是使用接口和動態代理。註釋除了添加元數據外什麼也不做。您將不得不添加代碼以基於註釋行事。
你必須做一些事情 -
創建界面
public interface IService {
@ValidateNull // Your custom annotation
public void yourMethod(String s1);
}
使用時實施,實例化它作爲一個JDK代理。現在
IService myService = (IService)java.lang.Proxy.newInstance(ServiceImpl.class.getClassLoader(),
ServiceImpl.class.getInterfaces(),
new YourProxy(new ServiceImpl());
,您可以通過反射,捕捉方法的所有調用的YourProxy
類。
public YourProxy implements InvocationHandler {
public Object invoke(Object arg0, Method method, Object[] args) throws Throwable {
if (method.isAnnotationPresent(ValidateNull.class)) {
//Check args if they are null and return.
}
}
}
如果你不想這樣做,那麼你正在尋找更重量級的框架,如AspectJ/Spring AOP。
3
相關問題
- 1. java註釋不調用重寫方法
- 2. PDO無效的參數編號 - 註釋中的參數
- 3. 注入帶註釋的方法參數
- 4. 防止GET參數注入
- 5. 如何編寫參數化的sql查詢以防止SQL注入?
- 6. 用於防止在GUI線程上進行調用的Android方法註釋
- 7. 哪種方法可以在C中編寫註釋?
- 8. 方法`then'調用的類型參數`U`。缺少註釋
- 9. 從方法返回無效,以防止執行
- 10. 可以使用@RequestHeader註釋哪些類的方法參數
- 11. HP Fortify - 註釋方法參數
- 12. 調用linux splice時無效的參數()
- 13. RESTEasy無法在scala類上調用我的註釋方法
- 14. 參數無效調用Bitmap.Save()
- 15. 是否可以在Eclipse中顯示方法參數的註釋?
- 16. 註釋它調用的方法
- 17. 其註釋字段調用方法
- 18. 防止googlebot調用ajax方法
- 19. 防止忘記調用一個方法
- 20. 如何防止willTerminate方法的調用?
- 21. @FacesConverter防止方法調用p:selectOneMenu和p:ajax
- 22. 在運行時檢查所有註釋方法的參數
- 23. 如何防止URL編碼傳遞參數時,方法在MVC控制器
- 24. 以編程方式創建參數塊時無法生成ParameterSetMetadata
- 25. 用註解註釋的方法的方面,用另一個註釋註釋
- 26. 是否可以將方法參數傳遞給方法上的註釋?
- 27. Java方法註釋如何與方法重寫一起使用?
- 28. 在vim中編寫函數註釋
- 29. 如何編寫替代鏈式方法調用的可變參數方法?
- 30. 以編程方式註釋Excel圖表
你使用任何一種框架?春天? java驗證框架? – Kal
你可以,但你會如何需要在你的方法周圍使用代理來查看這些參數是否爲空。 –
@Kal不,我沒有使用任何框架,我想這樣做,因爲我想讓方法失敗,而不是在運行時拋出NPE,太多的防禦檢查null只是混亂我的代碼,在我的項目中我們得到來自集合的大量輸入,一切都可以爲空,所以我想試試它是否有效。 – Sawyer