天天看點

java報前置引用異常,Illegal forward reference的原因

你是否了解前置引用異常?

例如下面的代碼

報異常的代碼

java報前置引用異常,Illegal forward reference的原因

滑鼠懸浮然後會提示你

java報前置引用異常,Illegal forward reference的原因
java報前置引用異常,Illegal forward reference的原因
java報前置引用異常,Illegal forward reference的原因
java報前置引用異常,Illegal forward reference的原因
java報前置引用異常,Illegal forward reference的原因

顯然和輸出語句無關

這幾種情況為什麼不一樣?

之是以會報這個異常<code>Illegal forward reference</code>就是因為成員屬性沒有被初始化,然後去操作它,例如指派、讀取這些操作肯定是不合法的。是以會報這個<code>非法前置引用</code>。

之是以報這個異常的原因是,jvm進行收集的時候,對于輸出語句是可以執行的,以下面這張圖為例:對于這個num報異常我的合了解釋是,在收集的過程中會執行輸出語句,但是這個num還沒有被初始化,是以紅色波浪線,而且提示你<code>Illegal forward reference</code>。(結論就是:<code>未被初始化的成員屬性,如果進行了調用那麼就會出現這種提示</code>,我這裡的解釋可能有點問題,我覺得問題在于收集的時候是否會執行這個輸出語句?整體來說肯定是<code>num未被初始化,調用了未被初始化的num是以報錯,至于是類初始化過程還是收集的時候,暫時還不清楚,後面知道了進行改正</code>)

java報前置引用異常,Illegal forward reference的原因