ホームページ >Java >&#&チュートリアル >Java は名前だけを使用してクラスをインスタンス化できますか?

Java は名前だけを使用してクラスをインスタンス化できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-02 12:35:22634ブラウズ

Can Java Instantiate Classes Using Only Their Names?

Java では名前によるクラスのインスタンス化は可能ですか?

クラスのインスタンス化を扱うとき、クラス名が次のようにしか知られていない状況が発生する可能性があります。文字列。これに対処するために、Java はこのタスクを達成するための 2 つのアプローチを提供します。

方法 1: 引数なしのコンストラクターを使用してインスタンス化する

引数なしのコンストラクターを持つクラスの場合、 Java では、Class.forName() メソッドを使用してクラス オブジェクトを取得し、 newInstance() メソッドを使用してオブジェクトを作成できます。 instance.

Class<?> clazz = Class.forName("java.util.Date");
Object date = clazz.newInstance();

方法 2: 引数なしコンストラクターの有無にかかわらずクラスを処理する

引数なしのクラスを含むすべてのシナリオをカバーする、より包括的なアプローチコンストラクターには、クラス オブジェクトにそのコンストラクターを問い合わせて、 newInstance() を呼び出すことが含まれます。

Class<?> clazz = Class.forName("com.foo.MyClass");
Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class);
Object instance = constructor.newInstance("stringparam", 42);

どちらのメソッドも Java のリフレクション機能を利用します。ただし、このプロセス中に発生する可能性のある次のような例外を処理することが重要です。

  • クラスが見つからない、またはロードできない
  • 適切なコンストラクターの欠如
  • コンストラクター例外のスロー
  • 非パブリック コンストラクター
  • セキュリティ マネージャーによる防止反省

以上がJava は名前だけを使用してクラスをインスタンス化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。