[JVM]の研究では、学ぶためにClass.forNameの道を指摘します

三つのパラメータのためのソースコードのバージョン

 

 ドキュメントの文書翻訳

指定されたクラスローダ(すなわち、第三の引数)を使用することで返す指定された文字列名(最初のパラメータ)クラスオブジェクトクラスまたは関連するインターフェース。所与のクラスまたはインタフェースの完全修飾名(のgetNameが同じフォーマットを返す)に、この方法は、検索、ロードおよびクラスまたはインタフェースをリンクしようと試みます。ローディングクラスまたはインタフェースのために指定されたクラスローダ。負荷パラメータがnullの場合、クラスはブートクラスローダによってロードされます。初期化パラメータが前に真であると初期化されていない場合にのみ、それがクラスを初期化します。
名前がプリミティブ型またはvoidを表す場合は、ユーザー定義クラスを見つけるために、名前のないパッケージの名前を命名しようとします。したがって、この方法は、任意のタイプまたはボイドを表すために、実質的にクラスオブジェクトを取得するために使用することができません。
クラスは、配列名を表す場合、ローディングアセンブリアレイクラスの種類はなく、初期化されていません。例えば、インスタンスメソッドでは、式は:
Class.forNameの(「fooが」)
と等価である:
Class.forNameの(「foo」という、真の、this.getClass()のgetClassLoader()) 
このメソッドは、につながることに注意してくださいJava言語仕様、セクション12.3と指定された負荷で12.4、またはリンク初期化関連のエラーのセクション12.2。このメソッドは、呼び出し側が要求されたアクセスできるクラスかどうかをチェックしないことに注意してください。
ローダがnullで、セキュリティマネージャが存在すると、呼び出し側のクラスローダがnullでない場合、このメソッドを使用すると、ブートストラップクラスローダにアクセスできることを保証するために、セキュリティマネージャのcheckPermissionメソッドを呼び出すためのRuntimePermission(「getClassLoader」)アクセス権を使用しています。
パラメータ:
  name -要求クラスの完全修飾名初期化- trueの場合、そのクラスを初期化します


  Java言語仕様のセクション12.4を参照してください。
  ローダー-クラスがクラスローダがロードされなければならない
戻り値:
  目的のオブジェクトクラスのクラスは表し
によって例外:
  -リンクが失敗した場合にLinkageError 
  ExceptionInInitializerErrorを-この方法は、初期化が失敗したトリガーした場合  
  、指定されたクラスローダがクラスを見つけることができない場合- ClassNotFoundExceptionが
導入されたバージョン:
  1.2 
関連項目また:
  にforName(String)を、クラスローダ
外部注釈:
  @ org.jetbrains.annotations.NonNls

 

おすすめ

転載: www.cnblogs.com/heben/p/11455600.html