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
Clone メソッドを使用する: オブジェクトの clone メソッドを呼び出すたびに、JVM は新しいオブジェクトを作成し、前のオブジェクトの内容をすべてそのオブジェクトにコピーします。 clone メソッドを使用してオブジェクトを作成しても、コンストラクターは呼び出されません。 clone メソッドを使用するには、まず Cloneable インターフェイスを実装し、その定義された clone メソッドを実装する必要があります。例: Student stu2 =
逆シリアル化を使用する: オブジェクトをシリアル化および逆シリアル化するとき、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 をキャプチャし、コンストラクター自体の例外をスローします。
【関連する推奨事項】
2. 3.以上がJava でのオブジェクトの作成方法の内訳の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。