你是否了解前置引用異常?
例如下面的代碼
報異常的代碼

滑鼠懸浮然後會提示你
顯然和輸出語句無關
這幾種情況為什麼不一樣?
之是以會報這個異常<code>Illegal forward reference</code>就是因為成員屬性沒有被初始化,然後去操作它,例如指派、讀取這些操作肯定是不合法的。是以會報這個<code>非法前置引用</code>。
之是以報這個異常的原因是,jvm進行收集的時候,對于輸出語句是可以執行的,以下面這張圖為例:對于這個num報異常我的合了解釋是,在收集的過程中會執行輸出語句,但是這個num還沒有被初始化,是以紅色波浪線,而且提示你<code>Illegal forward reference</code>。(結論就是:<code>未被初始化的成員屬性,如果進行了調用那麼就會出現這種提示</code>,我這裡的解釋可能有點問題,我覺得問題在于收集的時候是否會執行這個輸出語句?整體來說肯定是<code>num未被初始化,調用了未被初始化的num是以報錯,至于是類初始化過程還是收集的時候,暫時還不清楚,後面知道了進行改正</code>)