I have the following scenario where
both testOne() and testTwo calls same callMe() method.
How do I decide inside callMe() method who called callMe().
public void testOne(){
callMe();
}
public void testTwo(){
callMe();
}
public void callMe(){
System.out.println("I was called by following method."+methodName);
}
Any sort of help is appreciated.
Any solution that has you generating a stacktrace and looking at the second frame is one that is going to lead to pain – what you are essentially doing is bypassing the idea of passing what a function needs to it in order for the function to do it’s work.
If you need the name of the caller method, then just pass it as a parameter. If you need some other piece of data to decide what to do in the
callMe()method, pass it (as aboolean,int, etc.).It will confuse other developers working on your code why
callMe()has what are essentially secret parameters.