0

クラスではMyclass、クラスはオブジェクトとしてロードされますが、クラス自体Helpに再度ロードされます。クラスは2回ロードされ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)

この場合、2回インスタンス化することはありません。静的メソッドを使用して特定のクラスのオブジェクトをインスタンス化することは一般的な手順であり、ファクトリと呼ばれます。

于 2012-11-13T10:45:11.817 に答える
1

Helpクラスは1回ロードされます。ただし、おそらくそれのより多くのインスタンスを作成しています。1つはMyclassコンストラクターで作成され、もう1つはメソッドの呼び出し時に作成されHelp.getHelp()ます。

于 2012-11-13T10:43:31.583 に答える
1

クラスは2回ロードされませんが、オブジェクトとして2回インスタンス化されます。

これは、Javaチュートリアルの概要です。

于 2012-11-13T10:43:48.863 に答える