ホームページ  >  記事  >  Java  >  Java でのオブジェクトの作成方法の内訳

Java でのオブジェクトの作成方法の内訳

伊谢尔伦
伊谢尔伦オリジナル
2017-05-22 23:10:091527ブラウズ

Java 開発者は毎日多くのオブジェクトを作成しますが、通常は依存関係注入を使用してシステムを管理します。ただし、オブジェクトを作成するには、New キーワードを使用したり、Class クラスの newInstance メソッドを使用したりする方法があります。 、Constructor クラスの newInstance メソッドを使用し、Clone メソッドを使用し、逆シリアル化を使用します。

新しいキーワードを使用します: これは、オブジェクトを作成するための最も一般的で最も簡単な方法です。この方法で、任意の 関数 (パラメータなしでもパラメータありでも) を呼び出すこともできます。例: Student Student = new Student();

Class クラスの newInstance メソッドを使用します。この newInstance メソッドは、パラメーターなしのコンストラクターを呼び出してオブジェクトを作成することもできます。例: Student Student2 = (Student )Class.forName("Root path.Student").newInstance(); または: Student stu = Student.class.newInstance();

Constructor クラスの newInstance メソッドを使用します。このメソッドは、Class クラスの newInstance メソッドに非常に似ています。java.lang.relect.Constructor クラスには、オブジェクトを作成するための newInstance メソッドもあります。この newInstance メソッドを通じて、パラメーター化されたプライベート コンストラクター を呼び出すことができます。例: Constructor constructionor = Student.class.getInstance(); Student stu = construction.newInstance(); 実際、これらの 2 つの newInstance メソッドは、クラスの newInstance メソッドを内部的に呼び出します。コンストラクター。これは、Spring、Hibernate、Struts などの多くのフレームワークが後者を使用する理由でもあります。

Clone メソッドを使用する: オブジェクトの clone メソッドを呼び出すたびに、JVM は新しいオブジェクトを作成し、前のオブジェクトの内容をすべてそのオブジェクトにコピーします。 clone メソッドを使用してオブジェクトを作成しても、コンストラクターは呼び出されません。 clone メソッドを使用するには、まず Cloneable インターフェイスを実装し、その定義された clone メソッドを実装する必要があります。例: Student stu2 = stu.clone(); これもプロトタイプ モードのアプリケーションです。

逆シリアル化を使用する: オブジェクトをシリアル化および逆シリアル化するとき、JVM は逆シリアル化中にオブジェクトを作成し、コンストラクターを呼び出しません。オブジェクトを逆シリアル化するには、クラスに Serializable インターフェイスを実装する必要があります。例: ObjectInputStream in = new ObjectInputStream (new FileInputStream("data.obj")); Student stu3 = (Student)in.readObject();

上記の例からわかるように、new キーワードを使用することに加えて、 , その他 すべてのメソッドは invokevirtual (オブジェクトを作成する直接メソッド) に変換され、new の使用は new と invokespecial (コンストラクター呼び出し) の 2 つの呼び出しに変換されます。

また: 2 つの newInstance メソッドの間に違いはありますか?

☆ Class クラスは Java の lang パッケージにあり、コンストラクター クラスは Java リフレクション メカニズムの一部です。

☆ Class クラスの newInstance は、パラメーターなしのコンストラクターをトリガーしてオブジェクトを作成することしかできませんが、コンストラクター クラスの newInstance は、パラメーターまたは任意のパラメーターを持つコンストラクターをトリガーしてオブジェクトを作成できます。

☆ Class クラスの newInstance は、そのコンストラクターがパブリックであるか、呼び出し側メソッドから見える必要がありますが、コンストラクター クラスの newInstance は、特定の環境でプライベート コンストラクターを呼び出してオブジェクトを作成できます。

☆ ClassクラスのnewInstanceはクラスコンストラクタの例外をスローし、コンストラクタクラスのnewInstanceはInvocationTargetException例外をラップします。

Class クラスは基本的に、リフレクション パッケージのコンストラクター クラスのパラメーターなしの newInstance メソッドを呼び出し、InvocationTargetException をキャプチャし、コンストラクター自体の例外をスローします。

【関連する推奨事項】

1. いくつかの Java オブジェクトの簡単な紹介

2.

Java オブジェクトのコピーの詳細な例

3.

以上がJava でのオブジェクトの作成方法の内訳の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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