1 svar
79 visningar
beerger behöver inte mer hjälp
beerger 962
Postad: 4 nov 2021 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 962
Postad: 4 nov 2021 00:30 Redigerad: 4 nov 2021 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
Close