2013-03-29 42 views
0

Java中有一個關鍵字(或等價物),編譯器用關鍵字出現在方法(和/或類等)的名稱替代嗎?這將類似於Java編譯器中將方法名替換爲文字字符串的機制

__FUNCTION__ 

宏是C/C++。

我知道Java「不支持宏」,但我沒有要求用戶定義宏,只是一小部分關鍵字被編譯器知道的文字字符串替換。

我知道有方法讓一段代碼出現在(http://www.rgagnon.com/javadetails/java-0420.html)中,但我假設這些並不是免費的。毫不奇怪,如果這個功能存在,我想在跟蹤中使用它,所以它確實需要零成本或非常接近它。

我想這將取決於編譯器的實現,所以也許我的問題是,通常的Java編譯器(無論是與JDK自帶的)是否支持這一點。

如果沒有,我不明白爲什麼這是不可用的,因爲它看起來很有用,我認爲這對於編譯器來說是微不足道的,因爲它肯定知道它正在編譯的代碼的方法名稱。

+0

我不是專家,但我不認爲Java 7可以這樣做。 –

+0

不是。這是獲得它的唯一方法 - 查看堆棧。請注意,這是獲取當前方法的名稱或調用它的名稱或調用該方法的名稱的通用方法。 –

+0

當然,編譯器提供的功能是微不足道的 - 但對於_you_提供也是微不足道的。 –

回答

0

在最終方法的情況下,編譯器可能會用宏的方法的實際主體替換調用。這種機制被稱爲inlining

在C++中,我們可以選擇聲明一個函數inline

+0

我不認爲這對於Java編譯器來說是有效的。它通常是JIT編譯器功能的一部分。 –