首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么程序员要两次加载一个类?

为什么程序员要两次加载一个类?
EN

Stack Overflow用户
提问于 2012-11-13 18:39:39
回答 3查看 78关注 0票数 0

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

例如:

代码语言:javascript
复制
public class Myclass {
    int i;
    Object help;

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

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

帮助类:

代码语言:javascript
复制
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;
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-13 18:43:49

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

Here是Java教程中的高级视图。

票数 1
EN

Stack Overflow用户

发布于 2012-11-13 18:45:12

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

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

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

代码语言:javascript
复制
Help.getHelp(h)

getHelp(int)必须是静态的:

代码语言:javascript
复制
public static Help getHelp(int y)

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

票数 5
EN

Stack Overflow用户

发布于 2012-11-13 18:43:32

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13359245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档