の 物体 の基本的な構成要素です おっと 言語。で ジャワ を作成せずにプログラムを実行することはできません。 物体 。いろいろな方法がありますが、 を作成する Javaのオブジェクト このセクションで説明し、さらに学習します Java でオブジェクトを作成する方法。
ジャワ オブジェクトを作成する 5 つの方法を提供します。
- 使用する 新しい キーワード
- 使用する クローン() 方法
- 使用する newInstance() の方法 クラス クラス
- 使用する newInstance() の方法 コンストラクタ クラス
- 使用する 逆シリアル化
新しいキーワードを使用する
の使用 新しい キーワードは、クラスのオブジェクトまたはインスタンスを作成する最も一般的な方法です。 new キーワードを使用してクラスのインスタンスを作成すると、新しく作成されたインスタンスにメモリ (ヒープ) が割り当てられます。 物体 また、 参照 そのオブジェクトをその記憶に。 new キーワードは配列の作成にも使用されます。オブジェクトを作成するための構文は次のとおりです。
ClassName object = new ClassName();
new キーワードを使用してオブジェクトを作成するプログラムを作成してみましょう。
CreateObjectExample1.java
public class CreateObjectExample1 { void show() { System.out.println('Welcome to javaTpoint'); } public static void main(String[] args) { //creating an object using new keyword CreateObjectExample1 obj = new CreateObjectExample1(); //invoking method using the object obj.show(); } }
出力:
Welcome to javaTpoint
new キーワードを使用すると、クラスのコンストラクター (デフォルトまたはパラメーター化された) を呼び出すこともできます。
CreateObjectExample2.java
int を double java に変換します
public class CreateObjectExample2 { //constructor of the class CreateObjectExample2() { System.out.println('Welcome to javaTpoint'); } public static void main(String[] args) { //creating an object using new keyword CreateObjectExample2 obj = new CreateObjectExample2(); } }
出力:
Welcome to javaTpoint
clone() メソッドの使用
の クローン() メソッドはのメソッドです 物体 クラス。オブジェクトのコピーを作成し、同じコピーを返します。の JVM clone() メソッドが呼び出されると、新しいオブジェクトが作成されます。以前に作成したオブジェクトのすべてのコンテンツを新しい 1 つのオブジェクトにコピーします。コンストラクターを呼び出さないことに注意してください。を実装する必要があります。 クローン可能 clone() メソッドを使用するときのインターフェイス。メソッドはスローします CloneNotSupportedException オブジェクトのクラスが Cloneable インターフェイスをサポートしていない場合は例外です。 clone() メソッドをオーバーライドするサブクラスは、インスタンスを複製できない場合に例外をスローすることがあります。
注: このメソッドは、新しいオブジェクトではなく、オブジェクトのコピーを作成します。
構文:
protected Object clone() throws CloneNotSupportedException
次のステートメントを使用して新しいオブジェクトを作成します。
ClassName newobject = (ClassName) oldobject.clone();
CreateObjectExample3.java
文字列json Java
public class CreateObjectExample3 implements Cloneable { @Override protected Object clone() throws CloneNotSupportedException { //invokes the clone() method of the super class return super.clone(); } String str = 'New Object Created'; public static void main(String[] args) { //creating an object of the class CreateObjectExample3 obj1 = new CreateObjectExample3(); //try catch block to catch the exception thrown by the method try { //creating a new object of the obj1 suing the clone() method CreateObjectExample3 obj2 = (CreateObjectExample3) obj1.clone(); System.out.println(obj2.str); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } }
出力:
New Object Created
Class クラスの newInstance() メソッドの使用
の newInstance() Class クラスのメソッドもオブジェクトの作成に使用されます。デフォルトのコンストラクターを呼び出してオブジェクトを作成します。オブジェクトによって表されるクラスの新しく作成されたインスタンスを返します。内部的には、Constructor クラスの newInstance() メソッドを使用します。
構文:
public T newInstance() throws InstantiationException, IllegalAccessException
それは、 不正アクセス例外、 InstantiationException, ExceptionInInitializerError 例外。
次の方法でオブジェクトを作成できます。
ClassName object = ClassName.class.newInstance();
または
ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance();
上記の声明では、 forName() Classクラスの静的メソッドです。パラメータを解析します クラス名 文字列型。完全修飾名を持つクラスのオブジェクトを返します。クラスはロードされますが、オブジェクトは作成されません。投げる クラスが見つかりません例外 クラスをロードできない場合と、 リンケージエラー 連携に失敗した場合。
オブジェクトを作成するには、 newInstance() Class クラスのメソッド。これは、クラスの名前がわかっていて、クラスにパブリックなデフォルト コンストラクターがある場合にのみ機能します。
次のプログラムでは、newInstance() メソッドを使用して新しいオブジェクトを作成します。
文字列メソッドJava
CreateObjectExample4.java
public class CreateObjectExample4 { void show() { System.out.println('A new object created.'); } public static void main(String[] args) { try { //creating an instance of Class class Class cls = Class.forName('CreateObjectExample4'); //creates an instance of the class using the newInstance() method CreateObjectExample4 obj = (CreateObjectExample4) cls.newInstance(); //invoking the show() method obj.show(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } }
出力:
A new object created.
Constructor クラスの newInstance() メソッドの使用
それは、 newInstance() の方法 クラス クラス。これは、オブジェクトを作成する反射的な方法として知られています。メソッドは次のように定義されています。 コンストラクタ のクラスであるクラスjava.lang.reflectパッケージ。また、パラメータ化されたコンストラクターとプライベート コンストラクターを呼び出すこともできます。 newInstance() 方法。これは、Class クラスの newInstance() メソッドと比較して広く好まれています。
構文:
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
このメソッドは、オブジェクトの配列を引数として解析します。適切な型のラッパー オブジェクトでラップされたプリミティブ型の値。コンストラクターを呼び出して作成された新しいオブジェクトを返します。それは投げます IllegalAccessException、IllegalArgumentException、InstantiationException、InvocationTargetException、ExceptionInInitializerError 例外 。
次の方法でオブジェクトを作成できます。
Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance();
newInstance() メソッドを使用してオブジェクトを作成するプログラムを作成してみましょう。
CreateObjectExample5.java
import java.lang.reflect.*; public class CreateObjectExample5 { private String str; CreateObjectExample5() { } public void setName(String str) { this.str = str; } public static void main(String[] args) { try { Constructor constructor = CreateObjectExample5.class.getDeclaredConstructor(); CreateObjectExample5 r = constructor.newInstance(); r.setName('JavaTpoint'); System.out.println(r.str); } catch (Exception e) { e.printStackTrace(); } } }
出力:
JavaTpoint
逆シリアル化の使用
Javaでは、 連載化 オブジェクトをバイトストリームのシーケンスに変換するプロセスです。シリアル化の逆のプロセス (バイトストリームからオブジェクトへ) が呼び出されます。 逆シリアル化 。 JVM は、オブジェクトをシリアル化または逆シリアル化するときに新しいオブジェクトを作成します。オブジェクトの作成にコンストラクターを使用しません。逆シリアル化を使用している間、 シリアル化可能 インターフェース(マーカーインターフェース)はクラスに実装する必要があります。
シリアル化: の writeObject() の方法 オブジェクト出力ストリーム class はオブジェクトをシリアル化するために使用されます。オブジェクトを出力ストリームに送信します。
文字列 Java 置換
構文:
public final void writeObject(object x) throws IOException
逆シリアル化: 方法 readObject() の オブジェクト入力ストリーム class はオブジェクトを逆シリアル化するために使用されます。ストリームからオブジェクトを参照します。
構文:
public final Object readObject() throws IOException,ClassNotFoundException
注: フィールドをオブジェクトの一部として含めたくない場合は、フィールドを静的または一時的にします。シリアル化プロセスには含まれません。
プログラムを通してシリアル化とデシリアル化を理解しましょう。
従業員.java
import java.io.Serializable; public class Employee implements Serializable { int empid; String empname; public Empoyee(int empid, String empname) { this.empid = empid; this.empname = empname; } }
という名前のクラスを作成しました 従業員 そのオブジェクトがシリアル化および逆シリアル化されます。
Java オブジェクトのシリアル化:
次のプログラムでは、Employee クラスのオブジェクトを、 writeObject() ObjectOutputStream クラスのメソッド。オブジェクトの状態は次の場所に保存されます。 従業員.txt ファイル。
SerializationExample.java
Javaのstring.format
import java.io.*; class SerializationExample { public static void main(String args[]) { Try { //Creating the object Employee emp = new Employee(198054,'Andrew'); //Creates a stream and writes the object FileOutputStream fout=new FileOutputStream('employee.txt'); ObjectOutputStream out=new ObjectOutputStream(employeeout); out.writeObject(emp); out.flush(); //closes the output stream out.close(); System.out.println('Successfully Created'); } catch(Exception e) { System.out.println(e); } } }
出力:
Successfully Created
Java オブジェクトの逆シリアル化:
次のプログラムでは、上記のプログラムでシリアル化したオブジェクトを逆シリアル化します。
DeserializationExample.java
import java.io.*; class DeserializationExample { public static void main(String args[]) { try { //Creating a stream to read the object ObjectInputStream in=new ObjectInputStream(new FileInputStream('employee.txt')); Employee e=(Employee)in.readObject(); //prints the data of the serialized object System.out.println(e.empid+' '+e.empname); //closing the input stream in.close(); } catch(Exception e) { System.out.println(e); } } }
出力:
198054 Andrew
上記の 5 つの方法で次のことがわかりました。 新しい キーワードとその両方 newInstance() メソッドはコンストラクターを使用してオブジェクトを作成しますが、残りの 2 つのメソッドはコンストラクターを使用しません。