对象在未使用时是否在编译时优化了?

时间:2014-01-23 18:23:56

标签: java

熟悉编程和java

  • JDK 1.6
  • IDE Eclipse(Helios)

使用私人ctor创建了一个简单的类,如下所示

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;
        }
}

final int iInteger = 0;位于Recherché课程的断点 在默认的ctor声明为private的情况下,我希望应用程序无法编译,或者在执行时因异常而死亡。然而两者都完美无缺。

是否在编译时优化了对象,从而忽略了ctor?

2 个答案:

答案 0 :(得分:4)

使用此行

Recherche rech;

你做了创建一个Recherche对象;只是一个参考变量。这里没有任何对象:

rech = null;

没有调用构造函数来优化;没有对象,也没有int实例变量来优化。

添加一个实际创建对象的调用将导致构造函数的编译错误:

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

答案 1 :(得分:0)

使用new运算符创建类的对象,您将找到答案

Recherche obj = new Recherche();