2014-03-01 65 views
0

我試圖在我寫了一個類的主要方法如下代碼:從Object類型的finalize()方法不可見?

public static void main(String[] args){ 
    ... 
    Object s = new Object(); 
    s.finalize(); 
    ... 
} 

然而,日食給我一個提示,

The method finalize() from the type Object is not visible 

我很困惑,因爲Object類型有一個受保護的最終方法,應該是它自己可見的?無論如何,我是錯的嗎?

+0

訪問你是什麼不可見的意思? – Kick

+0

受保護的是私密的,可以從兒童課程訪問。不是由用戶。 –

+2

Object.finalize()默認是空的,它應該只在* finalize線程的垃圾回收之後調用*,如果有的話。 –

回答

3

Object#finalize()protected方法。你不能這樣稱呼它。 A protected類的成員由其直接子類繼承。您可以在this引用的直接子類中訪問它,但不能直接使用該類的引用。

這將是這樣的:

class Demo { 
    public void test() { 
     this.finalize(); 
    } 
} 

順便說一句,你爲什麼要來調用它?該方法由JVM自動調用,以在對象完全從內存中移除之前清除對象正在使用的任何資源。當對象將被摧毀

+0

另外Object類的finalize方法是空的 – Kick

+0

謝謝!我只想做一個測試,沒有具體的使用方法。 –

0

finalize()方法被調用。

如果你有一個自定義類,那麼你可以爲了做一些override此方法。
您不應該直接調用此方法。 JVM的垃圾回收器會自動爲你做。
,你不應該依賴於finalize()方法清除任何資源,它可能永遠不會你的程序的執行過程中發生的。

0

protected意味着,如果你在相同的軟件包對象,你只能訪問方法。並且對象是在包:java.lang.Object你的程序是在包com.yourpackage.something ==>你不能從你的包