---
title: "Kolla vilken klass som anroppar"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/54749-kolla-vilken-klass-som-anroppar"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "Viktor"
published: "2002-10-01T09:33:44.000Z"
updated: "2002-10-03T14:47:41.000Z"
replies: 4
views: 290
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/54749-kolla-vilken-klass-som-anroppar"
---

# Kolla vilken klass som anroppar

## #1 — Viktor, 2002-10-01T09:33Z

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.

/Viktor

Permalänk: https://www.webforum.nu/p/54749

## #2 — Lime, 2002-10-01T13:59Z

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:

```php
public void whatClass(Object o){
     System.out.println("You sent me the class:" + o.getClass() );         
    }
```

 

Om man gör anropet 

```php
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.

/Lime

Permalänk: https://www.webforum.nu/p/804538

## #3 — Viktor, 2002-10-01T19:48Z

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.

/Viktor

Permalänk: https://www.webforum.nu/p/804985

## #4 — Lime, 2002-10-03T10:28Z

Gå in i källkoden för Exception och se hur dom gör för att få tag på alla dom uppgifterna. Det borde ju gå att plagiera metoden.

Jag vet att det skall gå att få reda på vem som anropar en metod... Vet bara inte hur ännu. Återkommer.

/Lime

Permalänk: https://www.webforum.nu/p/806358

## #5 — Lime, 2002-10-03T14:47Z

Tjing igen!

Använd inte Exception-metoden. Den tar oerhört mycket kraft i anspråk. Om man har en DB-driver så vill man effektivisera så mycket som möjligt.

Välj om möjligt ansatsen att skicka med Caller i anropet. Väldigt lätt att implementera och oerhört effektivt.

/Lime

Permalänk: https://www.webforum.nu/p/809365

---

Tråden på webben: https://www.webforum.nu/amne/java/54749-kolla-vilken-klass-som-anroppar
