我正在编写一个与SOAP API对话的程序。我正在编写的程序涉及金钱,能够在运行时确定是有用的(我的理由是,如果我可以在运行时处理它,我可以轻松地将配置文件放在一起以便在编译后使用)我是否想要执行处理金钱的方法。
我有一个make请求方法,所有API调用都经过,理想情况下我想要这样的东西:
...
@DealsWithMoney
public void myMethodWhichMakesAnAPIRequest() {
...
this.makeRequest(...);
}
public void makeRequest(...) {
if (!this.allowMoneyHandlingMethods) {
//Psuedo code
if (method_that_called_this_method has @DealsWithMoney annotation) {
//ignore
}
}
}
我从来没有写过自定义注释,所以我很感激这里有一些指导。另外,如果你能提出一个更好的方法来处理这个问题吗?
干杯,
皮特
答案 0 :(得分:0)
public @interface DealsWithMoney {}
将为您定义注释。
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()
获取堆栈跟踪,您应该从该跟踪中获取调用者的Method
或Member
引用并执行
Annotation[] annotations = method.getDeclaredAnnotations();
并检查您要查找的注释是否在返回的列表中。