簡體   English   中英

如何在Java中獲取參數的變量名稱

[英]How can i get the name of a variable name of a parameter in Java

我將一個對象作為參數傳遞給方法。 我想知道該對象的名稱 - 我一直用於將對象傳遞給方法的特定引用變量。 有沒有辦法找到這個?

或者,通常,有沒有辦法找出調用方法使用的變量名稱將該值傳遞給調用的方法? 提前致謝。

注意 - 關於上面的第一個問題:我知道一個對象可以有許多指向它的句柄。 這是一個問題,參數名稱是否在方法中得到某種“特別關注”,或者一旦傳遞該值就沒有任何問題。

我相信你所要求的不僅僅是Java提供的堆棧信息。 當JVM接受該變量持有的句柄並將其放入堆棧以調用方法時,JVM沒有理由記錄變量的名稱。 實際上,通常沒有理由在編譯之后保留該名稱。 如果你能提供更多關於你為什么要做這種事情的信息,你可能會得到更合理的回答。

如果您想要的是可能的,那將是通過StackTraceElement ,但是看看API,沒有什么比你想要的更好。

這不可能有多種原因。 最重要的是:

函數的參數不必是變量。 您可以請求表達式的文本表示,但是需要將大量未使用的數據與程序一起存儲。 甚至變量名也不與程序一起存儲。 編譯保留的唯一變量名是靜態和實例字段和方法。 即使這樣,也沒有辦法(沒有嘗試反編譯調用者)來訪問調用表達式。

如果您需要一個具有此類數據的函數,則需要將其作為單獨的參數提供:

doLog(foo, "foo");
doLog(new Foo(), "new Foo()");
/*or*/ doLog(new Foo(), null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM