0

在类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;
    }
}
4

3 回答 3

5

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

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

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

Help.getHelp(h)

getHelp(int)必须是静态的:

public static Help getHelp(int y)

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

于 2012-11-13T10:45:11.817 回答
1

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

于 2012-11-13T10:43:31.583 回答
1

该类没有加载两次,而是两次实例化为对象。

是 Java 教程的高级视图。

于 2012-11-13T10:43:48.863 回答