我有一个X类,它说的是do方法。
我有另外两个班A& B中创建了X的对象。
有什么方法可以判断x的do()是否被A或B调用。
我不想在do()方法中使用参数。来自跟踪或其他什么东西?
我正在使用struts2,Spring。那么框架的任何帮助???
我想在do()中实现一些逻辑,基于它是从A还是B调用。
答案 0 :(得分:1)
嗯,是的,您可以使用Thread.getCurrentThread().getStackTrace()
检索堆栈并阅读StackTraceElement
s getClassName()
并与A或B匹配。(我试图想象一下会比一个参数更好,而且是空白的,但YMMV ......)
答案 1 :(得分:1)
可能,但是如果你必须这样做,那么为单独的功能提供两种方法可能是值得的,这些方法调用共享部分的单个方法。
Ascall(...)
specialStuffA
commonCall(...)
Bscall(...)
specialStuffB
commonCall(...)
commonCall(...)
commonStuffAB
答案 2 :(得分:0)
我知道这看起来很有线,但现有的逻辑可以快速发送推文以便为此工作。
情景是,
我有两个动作A& B调用服务X.
X被Spring AOP拦截,以添加过滤器并传递给DAO。
如果A调用X然后显示所有数据,即不应用过滤器,如果B调用X则显示仅登录用户的数据。
X已被拦截以添加其他一些过滤器,因此可以轻松添加一个过滤器。此过滤器也集中存在,因此所有A或B的调用X以及因此X将相应地进行工作。
我在这里找到了更好的方法,在X中有一个实例变量,A的X实例将有值'a',依此类推。
所以现在我将能够区分A的X调用和B的X调用。
有意义吗?