Kata pengantar
Sebagai pengembang Java, kami membuat sejumlah besar objek setiap hari, tetapi kami selalu menggunakan sistem ketergantungan manajemen (seperti kerangka kerja musim semi) untuk membuat objek ini. Bahkan, ada cara lain untuk membuat objek, yang akan saya perkenalkan secara rinci dalam artikel berikut.
1. Gunakan kata kunci baru
Ini adalah cara paling umum untuk membuat objek, dan juga sangat sederhana. Dengan menggunakan metode ini kita dapat memanggil konstruktor apa pun yang perlu kita hubungi.
Karyawan Emp1 = Karyawan Baru (); 0: Baru #19 // Kelas Org/Pemrograman/Mitra/Latihan/Karyawan 3: Dup 4: Invokespecial #21 // Metode org/pemrograman/mitra/latihan/karyawan. "" :() v
2. Gunakan metode NewInstance kelas kelas
Kami juga dapat menggunakan metode NewInstance dari kelas kelas untuk membuat objek. Metode NewInstance ini memanggil konstruktor tanpa parameter untuk membuat objek.
Kita dapat membuat objek menggunakan newinstance () dengan cara berikut:
Karyawan emp2 = (karyawan) class.forname ("org.programming.mitra.exercises.employee"). Newinstance ();atau
Karyawan emp2 = karyawan.class.newinstance (); 51: Invokevirtual #70 // Metode Java/Lang/Class.Newinstance :() ljava/lang/objek;
3. Gunakan metode NewInstance dari kelas konstruktor
Mirip dengan metode newInstance menggunakan kelas kelas, ada metode fungsi newInstance() di kelas java.lang.reflect.Constructor yang dapat digunakan untuk membuat objek. Dengan menggunakan metode newInstance ini, kami juga dapat memanggil konstruktor parameter dan konstruktor pribadi.
Konstruktor <eployee> konstruktor = karyawan.class.getConstructor (); karyawan emp3 = konstruktor.newinstance (); 111: Invokevirtual #80 // Metode Java/Lang/Reflect/Constructor.Newinstance: ([Ljava/Lang/Object;) Ljava/Lang/Objek;
Metode newInstance() ini dianggap sebagai sarana refleksi untuk membuat objek. Bahkan, metode newInstance() dari kelas dalam menggunakan metode newInstance() dari kelas konstruktor. Inilah sebabnya mengapa yang terakhir lebih disukai dan menggunakan kerangka kerja yang berbeda seperti Spring, Hibernate, Struts , dll.
4. Gunakan metode klon
Bahkan, setiap kali kita memanggil metode clone , mesin virtual Java membuat objek baru untuk kita dan menyalin isi objek sebelumnya ke dalam objek baru ini. Membuat objek menggunakan metode clone tidak memanggil konstruktor apa pun.
Untuk menggunakan metode clone() dalam suatu objek, kita perlu mengimplementasikan tipe kloning dan menentukan metode klon.
Karyawan Emp4 = (karyawan) emp3.clone (); 162: Invokevirtual #87 // Metode org/pemrograman/mitra/latihan/karyawan.clone () ljava/lang/objek;
5. Gunakan deserialisasi
Setiap kali kami membuat serial dan deserialisasi objek, mesin virtual Java membuat objek terpisah bagi kami. Dalam deserialisasi, mesin virtual Java tidak menggunakan konstruktor apa pun untuk membuat objek.
Serializing suatu objek mengharuskan kita untuk mengimplementasikan antarmuka serial yang dapat di -serial di kelas.
ObjectInputStream in = ObjectInputStream baru (FileInputStream baru ("data.obj")); karyawan emp5 = (karyawan) di.readObject (); 261: Invokevirtual #118 // Metode java/io/objectInputStream.readObject :() ljava/lang/objek; Seperti yang dapat kita lihat di cuplikan kode byte di atas, kecuali yang pertama dikonversi ke fungsi baru dan instruksi invokespecial , semua 4 metode dipanggil dan dikonversi ke invokevirtual .
Contoh
Mari kita lihat kelas Employee yang siap membuat objek:
Kelas Karyawan mengimplementasikan klonasi, serializable {private static final long serialversionuid = 1l; nama string pribadi; Pegawai publik () {System.out.println ("Konstruktor Karyawan Disebut ..."); } public string getName () {return name; } public void setName (name string) {this.name = name; } @Override public int hashCode () {final int prime = 31; Hasil int = 1; result = prime * result + ((name == null)? 0: name.hashcode ()); hasil pengembalian; } @Override public boolean sama (objek obj) {if (this == obj) mengembalikan true; if (obj == null) mengembalikan false; if (getClass ()! = obj.getClass ()) mengembalikan false; Karyawan lain = (karyawan) obj; if (name == null) {if (Other.name! = null) return false; } else if (! name.equals (Other.name)) return false; Kembali Benar; } @Override public string toString () {return "karyawan [name =" + name + "]"; } @Override Public Object Clone () {objek obj = null; coba {obj = super.clone (); } catch (clonenotsupportedException e) {e.printstacktrace (); } kembalikan obj; }} Dalam program Java berikut, kami menggunakan 5 cara untuk membuat objek Employee .
Public Class ObjectCreation {public static void main (string ... args) melempar Exception {// dengan menggunakan kata kunci baru karyawan emp1 = karyawan baru (); emp1.setname ("naresh"); System.out.println (Emp1 + ", HashCode:" + emp1.hashCode ()); // dengan menggunakan metode class newInstance () Metode karyawan emp2 = (karyawan) class.forname ("org.programming.mitra.exercises.employee") .newinstance (); // atau kita bisa melakukan ini // karyawan emp2 = usaha.class.newinstance (); emp2.setname ("rishi"); System.out.println (Emp2 + ", HashCode:" + emp2.hashcode ()); // dengan menggunakan metode konstruktor newInstance () Constructor Class <) <eployee> constructor = usaha.class.getConstructor (); Karyawan emp3 = konstruktor.newinstance (); emp3.setname ("yogesh"); System.out.println (emp3 + ", HashCode:" + emp3.hashcode ()); // dengan menggunakan metode clone () karyawan emp4 = (karyawan) emp3.clone (); emp4.setname ("atul"); System.out.println (Emp4 + ", HashCode:" + emp4.hashCode ()); // dengan menggunakan deserialization // serialisasi objectOutputStream out = new ObjectOutputStream (FileOutputStream baru ("data.obj")); out.writeObject (Emp4); out.close (); // deserialization objectInputStream in = new ObjectInputStream (FileInputStream baru ("data.obj")); Karyawan emp5 = (karyawan) in.readObject (); melampirkan(); emp5.setname ("akash"); System.out.println (Emp5 + ", HashCode:" + emp5.hashCode ()); }}Hasil output dari program ini adalah sebagai berikut:
Konstruktor Karyawan Disebut ... Karyawan [Name = Naresh], HashCode: -1968815046 Konstruktor yang Dipanggil ... Karyawan [Nama = Rishi], HashCode: 78970652 Konstruktor yang Dipanggil ... Name = Yogesh], Hashcode: -1641292792.mugini. [name = akash], HashCode: 63313419
Konten di atas adalah sekitar 5 metode berbeda untuk membuat objek di Java. Saya harap Anda akan membantu Anda belajar Jawa. Terima kasih atas dukungan Anda ke wulin.com.