1

私がクラスを持っているとしましょう:

public class SomeClass {

  public NotPresent1 method1(NotPresent2 input) {return null;}

  public void method2() {}

}

このクラスをコンパイルしましたが、実行時にNotPresent1またはNotPresent2、あるいはその両方がクラスパスにありません。そのクラスをロードできますか?そのようなクラスをインスタンス化して呼び出すことはできますmethod2()か?または多分私は呼び出すことさえできますmethod1(null)か?

4

1 に答える 1

1

AFAIKは指定されていません/VM/JITの実装に依存します。現在のVMは、できるだけ遅く(そのクラスのコードが呼び出されたとき/状態にアクセスされたとき)、クラスを遅延ロードすることを知っています。これは、ファットクライアント(Swing)の起動時間を短縮するために約1.3で行われました。ただし、積極的な最適化JITが事前にそれらをロードする場合があります(たとえば、サーバー側のパフォーマンスを最適化するため)。クラスの読み込みタイミングに関する現在の動作に依存しないでください。

于 2012-12-16T13:59:15.300 に答える