我可以为方法指定一个方法吗?当它的参数为空时,什么都不做,因为没有被调用?编写注释以防止参数无效时调用方法
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. @Cacheble无参数方法注释
- 2. java注释不调用重写方法
- 3. PDO无效的参数编号 - 注释中的参数
- 4. 注释后可以使用注释来调用方法吗?
- 5. C#和SQL参数,以防止注入
- 6. 注入带注释的方法参数
- 7. 防止GET参数注入
- 8. 如何编写参数化的sql查询以防止SQL注入?
- 9. 用于防止在GUI线程上进行调用的Android方法注释
- 10. 从使用注释的方法插入注释参数
- 11. 防止strace缩写参数?
- 12. 通过反射调用方法时无效的参数
- 13. 哪种方法可以在C中编写注释?
- 14. 方法`then'调用的类型参数`U`。缺少注释
- 15. 从方法返回无效,以防止执行
- 16. 可以使用@RequestHeader注释哪些类的方法参数
- 17. HP Fortify - 注释方法参数
- 18. 方法参数注释访问
- 19. 注释方式:忽略方法调用
- 20. calcHist方法 - 无效参数
- 21. 在@ModelAttribute注释方法内自动记录@PathVariable注释参数
- 22. 重写方法的默认参数值(防止样板)
- 23. 如何防止用gettext翻译注释()
- 24. Google Guice。用@Provides注释注释的方法不会被调用
- 25. 调用linux splice时无效的参数()
- 26. RESTEasy无法在scala类上调用我的注释方法
- 27. 是否可以在Eclipse中显示方法参数的注释?
- 28. 参数无效调用Bitmap.Save()
- 29. @BeforeStep注释的方法不被调用
- 30. Scala - 宏注释方法调用?
你使用任何一种框架?春天? java验证框架? – Kal
你可以,但你会如何需要在你的方法周围使用代理来查看这些参数是否为空。 –
@Kal不,我没有使用任何框架,我想这样做,因为我想让方法失败,而不是在运行时抛出NPE,太多的防御检查null只是混乱我的代码,在我的项目中我们得到来自集合的大量输入,一切都可以为空,所以我想试试它是否有效。 – Sawyer