Java-lang-class-forname-loader

提供:Dev Guides
移動先:案内検索

Java.lang.Class.forName()メソッド

説明

  • java.lang.Class.forName(String name、boolean initialize、ClassLoader loader)*メソッドは、指定されたクラスローダーを使用して、指定された文字列名を持つクラスまたはインターフェースに関連付けられたClassオブジェクトを返します。

指定されたクラスローダーは、クラスまたはインターフェイスをロードするために使用されます。 パラメータ loader がnullの場合、クラスはブートストラップクラスローダーを介してロードされます。 クラスは、 initialize パラメーターがtrueで、以前に初期化されていない場合にのみ初期化されます。

宣言

以下は* java.lang.Class.forName()*メソッドの宣言です

public static Class<?> forName(String name, boolean initialize, ClassLoader loader)
   throws ClassNotFoundException

パラメーター

  • name -これは、目的のクラスの完全修飾名です。
  • initialize -クラスを初期化する必要があるかどうかを示します。
  • loader -これは、クラスをロードする必要があるクラスローダーです。

戻り値

このメソッドは、目的のクラスを表すクラスオブジェクトを返します。

例外

  • LinkageError -リンケージが失敗した場合。
  • ExceptionInInitializerError -このメソッドによって引き起こされた初期化が失敗した場合。
  • ClassNotFoundException -指定されたクラスローダーがクラスを見つけられない場合

次の例は、java.lang.Class.forName()メソッドの使用法を示しています。

package com.finddevguides;

import java.lang.*;

public class ClassDemo {

   public static void main(String[] args) {

      try {
         Class cls = Class.forName("ClassDemo");

        //returns the ClassLoader object
         ClassLoader cLoader = cls.getClassLoader();

        /*returns the Class object associated with the class or interface
            with the given string name, using the given classloader.*/
         Class cls2 = Class.forName("java.lang.Thread", true, cLoader);

        //returns the name of the class
         System.out.println("Class = " + cls.getName());
         System.out.println("Class = " + cls2.getName());
      } catch(ClassNotFoundException ex) {
         System.out.println(ex.toString());
      }
   }
}

上記のプログラムをコンパイルして実行すると、次の結果が生成されます-

Class = ClassDemo
Class = java.lang.Thread