Jag har en DB pool och i den skulle jag vilja kolla vilken klass det är som gör anroppet (den anroppas av flera olika klasser under sitt liv). Finns det något sätt att kolla det på? Jag vill altså kolla det i klassen, inte via något externt debug program.
Det uppenbara sättet att göra det på är att alltid kräva att den som anropar metoden i DB poolen skall skicka med referens till sig själv. Då kan man nämeligen göra såhär:
public void whatClass(Object o){
System.out.println("You sent me the class:" + o.getClass() );
}
Om man gör anropet
ClassTester ct = new ClassTester();
ct.whatClass(new ClassA());
ct.whatClass(new ClassB());
Så får man ut :
You sent me the class:class lime.ClassA
You sent me the class:class lime.ClassB
Ska se om det inte går att via Reflection eller liknande få fram vem som anropat metoden. Återkommer imorgon.
Tack för tipset. Tittade lite på Reflection men kunde inte hitta något där men så hittade jag lite på Google och kom på ett smutsigt sätt att göra det på (eller kanske inte så smutsigt :))
StackTraceElement[] ste; // ny klass sedan 1.4
Exception e=new Exception();
ste=e.getStackTrace(); // ny funktion sedan 1.4
System.out.println(ste[1].getFileName());
System.out.println(ste[1].getLineNumber());
System.out.println(ste[1].getMethodName());
System.out.println(ste[1].getClassName());
Då får jag allt som jag behöver, men som sagt vet inte om det är ett bra sätt.