1 svar
35 visningar
beerger är nöjd med hjälpen
beerger 937
Postad: 4 nov 00:00

Vilken kodrad anropas metoden ifrån?

    public static void testLine()
    {
        System.out.println(getLine());
    }

    public static int getLine()
    {
        return Thread.currentThread().getStackTrace()[1].getLineNumber();
    }

Hej!

Jag försöker skriva en funktion som ska returnera från vilken rad denna funktion anropas ifrån.

T.ex. om vi säger att

System.out.println(getLine());

är på rad 10, så vill jag att getLine() ska returnera 10. Just nu returnerar den vilken rad

return Thread.currentThread().getStackTrace()[1].getLineNumber();

befinner sig på.

Någon som vet hur man kan göra det?

beerger 937
Postad: 4 nov 00:30 Redigerad: 4 nov 00:30
    public static int getLine()
    {
        return Thread.currentThread().getStackTrace()[3].getLineNumber();
    }

Löste det genom att öka indexet i stacken för hittade att:

The last element of the array represents the bottom of the stack,

which is the least recent method invocation in the sequence.

Vilket gör att jag kommer åt information om de tidigare anropen, då de är placera längre ifrån "botten" av stacken.

Svara Avbryt
Close