في بعض الأحيان ، قد تواجه أسئلة مقابلة مثل:
ما هي طرق إنشاء كائنات في جافا؟
بالإضافة إلى الجديد ، ما هي الطرق الأخرى لإنشاء كائنات في Java؟
تجمع هذه المقالة بين أمثلة لإعطاء العديد من أساليب Java لإنشاء كائنات. هنا نذهب ~~~~
إنشاء مع جديد
هذا هو الأكثر استخداما واحد. يحب:
كتاب كتاب = كتاب جديد () ؛
الأمثلة على النحو التالي:
اختبار الحزمة ؛ استيراد java.io.serializable ؛ import java.util.list ؛/** * Author Wangmengjun * */كتاب الفئة العامة الأدوات التسلسلية {private Static Final Long SerialVersionuid = -6212470156629515269L ؛ / ** عنوان الكتاب*/ اسم السلسلة الخاصة ؛ / ** مؤلف*/ قائمة خاصة <Tring> المؤلفين ؛ / ** ISBN*/ Private String ISBN ؛ / ** السعر*/ سعر التعويم الخاص ؛ كتاب عام () {} / ** * param name * param upitors * param isbn * param price * / public book (اسم السلسلة ، القائمة <string> المؤلفين ، السلسلة isbn ، سعر التعويم) {this.name = name ؛ this.authors = المؤلفين ؛ this.isbn = ISBN ؛ this.price = السعر ؛ } / ** * @RETURN Name * / public String getName () {return name ؛ } / ** * param اسم الاسم لتعيين * / public void setName (اسم السلسلة) {this.name = name ؛ } / ** * return المؤلفين * / قائمة عامة <string> getAuthors () {return upitors ؛ } / ** * param upustors المؤلفين لتعيين * / public void setAuthors (قائمة <Tring> المؤلفين) {this.authors = uplemors ؛ } / ** * @RETURN ISBN * / public String getIsBn () {return isBn ؛ } / ** * param isBn ISBN لتعيين * / public void setIsBn (String ISBN) {this.isbn = isBn ؛ } / ** * RETURN السعر * / public float getPrice () {return price ؛ } / ** * param السعر السعر لتعيين * / public void setPrice (سعر التعويم) {this.price = price ؛ } / * (غير javadoc) * see java.lang.object#toString () * / Override public string toString () {return "book [name =" + name + " }} / *** 1. إنشاء كائن باستخدام كتاب جديد*/ book1 = New Book () ؛ book1.setName ("redis") ؛ Book1.setauthors (Arrays.aslist ("eric" ، "John")) ؛ Book1.SetPrice (59.00F) ؛ Book1.setisbn ("ABBBB-QQ677868686-HSDKHFKHKH-2324234") ؛ System.out.println (Book1) ؛استخدم object.clone ()
إذا كنت ترغب في استدعاء طريقة الاستنساخ ، فيجب أن يقوم الكائن بتنفيذ الواجهة المستنسخة وتجاوز طريقة Clone ().
فئة الكتب المعدلة هي كما يلي:
اختبار الحزمة ؛ استيراد java.io.serializable ؛ استيراد java.util.list ؛/** * Author wangmengjun * */كتاب الطبقة العامة الأدوات التسلسلية ، القابلة للاستنساخ {private Static Final Long SerialVersionuid = -6212470156629515269l ؛ / ** عنوان الكتاب*/ اسم السلسلة الخاصة ؛ / ** مؤلف*/ قائمة خاصة <Tring> المؤلفين ؛ / ** ISBN*/ Private String ISBN ؛ / ** السعر*/ سعر التعويم الخاص ؛ كتاب عام () {} / ** * param name * param upitors * param isbn * param price * / public book (اسم السلسلة ، القائمة <string> المؤلفين ، السلسلة isbn ، سعر التعويم) {this.name = name ؛ this.authors = المؤلفين ؛ this.isbn = ISBN ؛ this.price = السعر ؛ } / ** * @RETURN Name * / public String getName () {return name ؛ } / ** * param اسم الاسم لتعيين * / public void setName (اسم السلسلة) {this.name = name ؛ } / ** * return المؤلفين * / قائمة عامة <string> getAuthors () {return upitors ؛ } / ** * param upustors المؤلفين لتعيين * / public void setAuthors (قائمة <Tring> المؤلفين) {this.authors = uplemors ؛ } / ** * @RETURN ISBN * / public String getIsBn () {return isBn ؛ } / ** * param isBn ISBN لتعيين * / public void setIsBn (String ISBN) {this.isbn = isBn ؛ } / ** * RETURN السعر * / public float getPrice () {return price ؛ } / ** * param السعر السعر لتعيين * / public void setPrice (سعر التعويم) {this.price = price ؛ } / * (غير javadoc) * see java.lang.object#toString () * / Override public string toString () {return "book [name =" + name + " } override كائن محمي clone () يلقي clonenotsupportedException {return (book) super.clone () ؛ }}رمز الاختبار
/ *** 1. إنشاء كائن باستخدام كتاب جديد*/ book1 = New Book () ؛ book1.setName ("redis") ؛ Book1.setauthors (Arrays.aslist ("eric" ، "John")) ؛ Book1.SetPrice (59.00F) ؛ Book1.setisbn ("ABBBB-QQ677868686-HSDKHFKHKH-2324234") ؛ System.out.println (Book1) ؛ / *** 2. قم بإنشاء كائن باستخدام clone*/ try {book Book2 = (book) book1.clone () ؛ System.out.println (Book2) ؛ } catch (clonenotsupportedException e) {// todo catch catch e.printstacktrace () ؛ }استخدم class.newinstance ()
يمكن القيام به مباشرة باستخدام class.forname ("xxx.xx"). method newinstance () أو xxx.class.newinstance ().
/*** 3. استخدم class.newinstance () ؛ */ try {book Book3 = (book) class.forname ("test.book"). newinstance () ؛ System.out.println (Book3) ؛ book3 = book.class.newinstance () ؛ System.out.println (Book3) ؛ } catch (instantiationException | alfictAccessException | classnotfoundException e) {// todo catch catch e.printstacktrace () ؛ }استخدم Conttutor.newinstance ()
يمكنك تحديد مُنشئ لإنشاءه ، مثل تحديد المُنشئ الأول لإنشاءه ؛ يمكنك أيضًا تحديد نوع معلمة مُنشئ لإنشاء.
/*** 4. استخدم constructor.newinstance () ؛ */جرب {// حدد المُنشئ الأول لإنشاء كتاب كتاب 4 = (كتاب) book.class.getConstructors () [0] .NewInstance () ؛ // book [name = null ، upitors = null ، isBn = null ، price = 0.0] system.out.println (book4) ؛ / *** اتصل بالمنشئ المحدد لإنشاء كائن*/ book4 = (كتاب) book.class.getConstructor (string.class ، list.class ، string.class ، float.class) .newinstance ("مثال جديد مثيل" ، 60.00.00 // book [name = مثال مثيل جديد ، المؤلفون = [Wang ، eric] ، ISBN = ABC1111111-DEF-33333 ، Price = 60.0] System.out.println (Book4) ؛ } catch (instantiationException | alfortiveAccessException | invalicalArgumentException | invocationTargetException | SecurityException | nosuchmethodexception e) {// todo catch catch e.printstacktrace () ؛ }باستخدام class.newinstance () أو contrutor.newinstance () هو نفسه في جوهره ، كلاهما يعتمد آلية الانعكاس.
باستخدام هروب
/ *** 5. استخدم Deserialization*/ try (ObjectOutputStream OOS = New ObjectOutputStream (FileOutputStream جديد ("book.dat")) ؛ ObjectInputStream OIS = new ObjectInputStream (FileInputStream جديد ("book.dat") ؛) Book Book5 = (Book) ois.ReadObject () ؛ System.out.println (Book5) ؛ } catch (ioException | classnotfoundException e) {// todo catch catch e.printstacktrace () ؛ }بالطبع ، بالإضافة إلى الطرق المذكورة أعلاه ، يمكنك أيضًا استخدام JNI وطرق أخرى لإنشاء كائنات ، لذلك لن أدرجها واحدًا تلو الآخر.
رمز المثال الكامل كما يلي:
book.java
اختبار الحزمة ؛ استيراد java.io.serializable ؛ استيراد java.util.list ؛/** * Author wangmengjun * */كتاب الطبقة العامة الأدوات التسلسلية ، القابلة للاستنساخ {private Static Final Long SerialVersionuid = -6212470156629515269l ؛ / ** عنوان الكتاب*/ اسم السلسلة الخاصة ؛ / ** مؤلف*/ قائمة خاصة <Tring> المؤلفين ؛ / ** ISBN*/ Private String ISBN ؛ / ** السعر*/ سعر التعويم الخاص ؛ كتاب عام () {} / ** * param name * param upitors * param isbn * param price * / public book (اسم السلسلة ، القائمة <string> المؤلفين ، السلسلة isbn ، سعر التعويم) {this.name = name ؛ this.authors = المؤلفين ؛ this.isbn = ISBN ؛ this.price = السعر ؛ } / ** * @RETURN Name * / public String getName () {return name ؛ } / ** * param اسم الاسم لتعيين * / public void setName (اسم السلسلة) {this.name = name ؛ } / ** * return المؤلفين * / قائمة عامة <string> getAuthors () {return upitors ؛ } / ** * param upustors المؤلفين لتعيين * / public void setAuthors (قائمة <Tring> المؤلفين) {this.authors = uplemors ؛ } / ** * @RETURN ISBN * / public String getIsBn () {return isBn ؛ } / ** * param isBn ISBN لتعيين * / public void setIsBn (String ISBN) {this.isbn = isBn ؛ } / ** * RETURN السعر * / public float getPrice () {return price ؛ } / ** * param السعر السعر لتعيين * / public void setPrice (سعر التعويم) {this.price = price ؛ } / * (غير javadoc) * see java.lang.object#toString () * / Override public string toString () {return "book [name =" + name + " } override كائن محمي clone () يلقي clonenotsupportedException {return (book) super.clone () ؛ }}createObjectexample.java
اختبار الحزمة ؛ استيراد java.io.fileInputStream ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.ioException ؛ استيراد java.io.objectinputStream ؛ import java.io.objectoutputstream ؛ import java.lang.reflect.invocation Author wangmengjun * */public class createObjectample {public static void main (string [] args) {/** * 1. إنشاء كائن باستخدام */book book1 = new book () ؛ book1.setName ("redis") ؛ Book1.setauthors (Arrays.aslist ("eric" ، "John")) ؛ Book1.SetPrice (59.00F) ؛ Book1.setisbn ("ABBBB-QQ677868686-HSDKHFKHKH-2324234") ؛ System.out.println (Book1) ؛ / *** 2. قم بإنشاء كائن باستخدام clone*/ try {book Book2 = (book) book1.clone () ؛ System.out.println (Book2) ؛ } catch (clonenotsupportedException e) {// todo catch catch e.printstacktrace () ؛ } /*** 3. استخدم class.newinstance () ؛ */ try {book Book3 = (book) class.forname ("test.book"). newinstance () ؛ System.out.println (Book3) ؛ book3 = book.class.newinstance () ؛ System.out.println (Book3) ؛ } catch (instantiationException | alfictAccessException | classnotfoundException e) {// todo catch catch e.printstacktrace () ؛ } /*** 4. استخدم constructor.newinstance () ؛ */جرب {// حدد المُنشئ الأول لإنشاء كتاب كتاب 4 = (كتاب) book.class.getConstructors () [0] .NewInstance () ؛ // book [name = null ، upitors = null ، isBn = null ، price = 0.0] system.out.println (book4) ؛ / *** اتصل بالمنشئ المحدد لإنشاء كائن*/ book4 = (كتاب) book.class.getConstructor (string.class ، list.class ، string.class ، float.class) .newinstance ("مثال جديد مثيل" ، 60.00.00 // book [name = مثال مثيل جديد ، المؤلفون = [Wang ، eric] ، ISBN = ABC111111-DEF-33333 ، Price = 60.0] System.out.println (Book4) ؛ } catch (instantiationException | alfortiveAccessException | invalicalArgumentException | invocationTargetException | SecurityException | nosuchmethodexception e) {// todo catch catch e.printstacktrace () ؛ } / *** 5. استخدم Deserialization* / try (ObjectOutputStream OOS = new ObjectOutputStream (fileOutputStream جديد ("book.dat")) ؛ ObjectInputStream OIS = new ObjectInputStream (FileInputStream جديد ("book.dat") ؛) Book Book5 = (Book) ois.ReadObject () ؛ System.out.println (Book5) ؛ } catch (ioException | classnotfoundException e) {// todo catch catch e.printstacktrace () ؛ }}}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.