英文:
Take method argument as an argument in the annotation in Java 8
问题
迄今为止,我已经查找了,似乎不可能实现,所以如果是这种情况,那么满足以下要求的最佳替代方案是什么?
@Authentication_Annotation(id, password)
public void method(String id, String password, String param) {
// 如果ID和密码正确,则执行某些操作。
}
由于您具有Python背景,使用装饰器在Python中是可能的。在Java中,我们是否仍然可以实现这一点,而不需要每次需要提供身份验证的方法时都调用一个进行身份验证的方法?
英文:
I have looked up and till now it doesn't seem possible, so, if that's the case, what is the best alternative to meet the following requirement?
@Authentication_Annotation(id, password)
public void method(String id, String password, String param) {
// Does something if ID and Password are correct.
}
Coming from a python background, this would have been possible using decorators.
Can we still do it in java, without calling a method that authenticates every time a method needs to be provided authentication?
答案1
得分: 1
你可以直接在你的注解中访问方法参数,而不必将其明确地作为参数传递。
使用AOP:
https://stackoverflow.com/questions/15660535/get-method-arguments-using-spring-aop
无论如何,还可以通过反射使用DynamicProxy来实现另一种方式:
https://stackoverflow.com/questions/2541554/java-method-missing-ala-ruby-for-decorating
英文:
You can access method args directly in your annotation instead of passing it as arguments explicitly.
Using AOP:
https://stackoverflow.com/questions/15660535/get-method-arguments-using-spring-aop
Anyways there seems to be another way via reflection using DynamicProxy:
https://stackoverflow.com/questions/2541554/java-method-missing-ala-ruby-for-decorating
答案2
得分: 0
这在Java中是不可能的(至少不需要极端恶意的黑魔法)。
英文:
It is impossible in Java (at least without ungodly amount of very dark black magic).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论