2014-01-23 56 views
0

編程刷牙和Java對象在編譯時未使用時是否進行了優化?

  • JDK 1.6
  • IDE的Eclipse(太陽神)

已經創建了一個簡單類的私人構造函數如下

package learn; 

public class Recherche { 

    final int iInteger = 0; 

    private Recherche() { 
    } 
} 

這從項目入口調用如下

package learn; 

public class Tutorial { 

     public static void main(String[] args) { 
      System.out.println("Hello Windows 7x64"); 
      Recherche rech; 
      rech = null; 
     } 
} 

放置在類Recherché中的斷點final int iInteger = 0; 由於缺省ctor被聲明爲private,我預計應用程序編譯失敗,或者在執行時遇到異常。但兩者都完美無缺。

在編譯時優化了對象,因此忽略了ctor?

+0

你永遠不會創建該對象的實例 – nachokk

回答

4

這一行

Recherche rech; 

你沒有創建Recherche對象;只有一個參考變量。而且這裏也沒有任何對象:

rech = null; 

沒有調用構造函數來優化out;沒有對象,也沒有int實例變量進行優化。

添加呼叫實際創建一個對象將導致構造函數是私有的編譯器錯誤:

rech = new Recherche(); // can't access private constructor 
+0

+1你快xD – nachokk

0

使用new運算符創建類的對象,你會找到答案

Recherche obj = new Recherche(); 
相關問題