编码员为什么要加载两次课程?

时间:2012-11-13 10:39:39

标签: java

在类Myclass中,类Help作为对象加载,但随后又在Help类本身中加载。是不是Help类加载了两次?这样做的原因是什么?

例如:

public class Myclass {
    int i;
    Object help;

    public Myclass()  {
        help = new Help(); /// help class loaded
    }

    private Object doSomething(int h)  {
        Help.getHelp(h);
    }
}

帮助课程:

public class Help(){
    Object returnhelp;
    int h;

    public Help()   {
        int h=3;
    }

    public Help getHelp(int y)  {
        return new Help(y);    ///// Help class loaded again ????
    }

    private add(int y)  {
        h=+y;
        return h;
    }
}

3 个答案:

答案 0 :(得分:5)

首先,您将类加载与类实例化混淆。

  • 类加载是指Java虚拟机将类代码加载到内存中。
  • 类实例化是指您创建该类的实例(对象)。

此外,您的代码无法编译,因为为了做到这一点

Help.getHelp(h)

getHelp(int)必须是静态的:

public static Help getHelp(int y)

在这种情况下,您没有实例化两次。使用静态方法实例化给定类的对象是一个常见的过程,它被称为factory

答案 1 :(得分:1)

Help类加载一次。但是,您可能正在创建更多的实例。一个在Myclass构造函数中创建,另一个在调用Help.getHelp()方法时创建。

答案 2 :(得分:1)

该类未加载两次,但两次实例化为对象。

Here是Java教程的高级视图。