ホームページ > Java > &#&チュートリアル > プロパティ ファイルから Java クラスを動的にロードしてインスタンス化するにはどうすればよいですか?

プロパティ ファイルから Java クラスを動的にロードしてインスタンス化するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-24 19:26:12
オリジナル
306 人が閲覧しました

How Can I Dynamically Load and Instantiate Java Classes from a Property File?

動的クラスのロードとインスタンス化

動的クラスのロードには、明示的なコンパイルを必要とせずに、プログラムによる Java クラスのロードとインスタンス化が含まれます。これは、Java 動的クラス読み込みメカニズムを利用することで実現されます。

あなたの場合、クラス名はプロパティ ファイルに保存され、クラスは IDynamicLoad インターフェイスを実装すると述べました。クラスを動的にインスタンス化するには、次の手順に従います。

  1. クラスをロードします。

    • Class.forName(className) はクラスを返します。目的のクラスを表すオブジェクト。
    • ただし、このメソッドはコンパイル済みのクラスのみをロードします。 files.
  2. クラスをコンパイルします (まだコンパイルされていない場合):

    • クラスがコンパイルされていない場合は、 javax.tools API を使用してプログラムでコンパイルできます。
    • これには、 JavaCompiler、コンパイル タスクを設定し、compiler.run() を呼び出してコンパイルを実行します。
  3. ClassLoader を作成します:

    • コンパイルされたクラスが存在するディレクトリを参照する URLClassLoader インスタンスを作成します。
  4. クラスをロードしてインスタンス化します。

    • Class.forName(className, true, classLoader) を使用して、コンパイルされたクラスをクラスローダーにロードします。
    • Call getDeclaredConstructor() newInstance() を使用して、クラスのオブジェクトをインスタンス化します。

例:

// Load the class name from the property file
Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("ClassName.properties"));
String className = properties.getProperty("class", "DefaultClass");

// Compile the class if not already compiled
if (!new File(className + ".class").exists()) {
    // Implementation for class compilation goes here
}

// Load and instantiate the class
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { new File("./").toURI().toURL() });
Class<?> cls = Class.forName(className, true, classLoader);
Object instance = cls.getDeclaredConstructor().newInstance();
ログイン後にコピー

次の手順に従うことで、明示的なコンパイルに依存せずに、Java クラスを動的にコンパイルおよびインスタンス化できます。

以上がプロパティ ファイルから Java クラスを動的にロードしてインスタンス化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート