我正在浏览API并尝试使用Google搜索,但我想我无法正确地说出来或者说它不可能。我的问题是:是否有可能让一个方法根据它的调用位置执行特定的代码序列?
答案 0 :(得分:4)
你可以get the current stacktrace并从那种称为当前方法的方法中找出答案。
这看起来非常脏,所以你应该确保你的用例实际上保证了这种方法,而不是仅仅在方法中添加参数或创建不同的方法。
答案 1 :(得分:3)
它看起来像是继承和两个不同实现的好地方
答案 2 :(得分:3)
是的,这是可能的。但这可能是一个坏主意。
实现这种目标的一种方法是这样的:
public void myMethod(...) {
Exception ex = new Exception();
StackTraceElement caller = ex.getStackTrace()[1];
if (caller.getMethod().equals("someMethod") {
// do this
} else {
// do that
}
}
StackTraceElement给出方法的名称,声明类的名称,以及可用时源文件的名称和源行号。
有几个原因可以解释为什么这是一个坏主意: