時々、次のようなインタビューの質問に遭遇する可能性があります。
Javaでオブジェクトを作成する方法は何ですか?
新しいことに加えて、Javaでオブジェクトを作成する他の方法は何ですか?
この記事では、例を組み合わせて、いくつかのJavaメソッドを提供してオブジェクトを作成します。ここに行きます~~~~
新しいで作成します
これは最も一般的に使用されるものです。のように:
book book = new book();
例は次のとおりです。
パッケージテスト; Import java.io.serializable; import java.util.list;/** * @author wangmengjun * */public class book実装{private static final long serialversionuid = -6212470156629515269l; / **本のタイトル*/プライベート文字列名; / **著者*/プライベートリスト<String>著者; / ** isbn*/ private string isbn; / **価格*/プライベートフロート価格。 public book(){} / ** * @param name * @param Authors * @param isbn * @param price * / public book(string name、list <string>著者、string isbn、float price){this.name = name; this.authors = authors; this.isbn = isbn; this.price = price; } / ** * @return name * / public string getname(){return name; } / ** * @param name name to set * / public void setname(string name){this.name = name; } / ** * @return the Authors * / public list <String> getAuthors(){return Authors; } / ** * @param Authors著者は * / public void setauthors(list <string>著者){this.authors =著者; } / ** * @return the isbn * / public string getisbn(){return isbn; } / ** * @param isbn set * / public void setisbn(string isbn){this.isbn = isbn; } / ** * @return the price * / public float getPrice(){return price; } / ** * @param価格設定の価格} / *(nonjavadoc) * @see java.lang.object#toString() * / @Override public String toString(){return "book [name =" + name + "、authors =" +著者 + "、isbn =" + isbn + "、price =" + price + "]; }}/ *** 1。new*/ book book1 = new book()を使用してオブジェクトを作成します。 book1.setname( "redis"); book1.setauthors(arrays.aslist( "eric"、 "john")); book1.setprice(59.00f); book1.setisbn( "abbbb-qq677868686-hsdkhkhkh-2324234"); System.out.println(book1);
object.clone()を使用します
クローンメソッドを呼び出す場合は、オブジェクトはクローン可能なインターフェイスを実装し、clone()メソッドをオーバーライドする必要があります。
修正された本のクラスは次のとおりです。
パッケージテスト; Import java.io.serializable; import java.util.list;/** * @author wangmengjun * */public class book実装serializable、cloneable {private static final serialversionuid = -6212470156629515269L; / **本のタイトル*/プライベート文字列名; / **著者*/プライベートリスト<String>著者; / ** isbn*/ private string isbn; / **価格*/プライベートフロート価格。 public book(){} / ** * @param name * @param Authors * @param isbn * @param price * / public book(string name、list <string>著者、string isbn、float price){this.name = name; this.authors = authors; this.isbn = isbn; this.price = price; } / ** * @return name * / public string getname(){return name; } / ** * @param name name to set * / public void setname(string name){this.name = name; } / ** * @return the Authors * / public list <String> getAuthors(){return Authors; } / ** * @param Authors著者は * / public void setauthors(list <string>著者){this.authors =著者; } / ** * @return the isbn * / public string getisbn(){return isbn; } / ** * @param isbn set * / public void setisbn(string isbn){this.isbn = isbn; } / ** * @return the price * / public float getPrice(){return price; } / ** * @param価格設定の価格} / *(nonjavadoc) * @see java.lang.object#toString() * / @Override public String toString(){return "book [name =" + name + "、authors =" +著者 + "、isbn =" + isbn + "、price =" + price + "]; } @Override保護されたオブジェクトclone()clonenotsupportedexception {return(book)super.clone(); }}テストコード
/ *** 1。new*/ book book1 = new book()を使用してオブジェクトを作成します。 book1.setname( "redis"); book1.setauthors(arrays.aslist( "eric"、 "john")); book1.setprice(59.00f); book1.setisbn( "abbbb-qq677868686-hsdkhkhkh-2324234"); System.out.println(book1); / *** 2。クローンを使用してオブジェクトを作成*/ try {book book2 =(book)book1.clone(); System.out.println(book2); } catch(clonenotsupportedexception e){// todo auto-enerated catch block e.printstacktrace(); }class.newinstance()を使用します
class.forname( "xxx.xx")。newinstance()methodまたは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 | Illegalaccessexception | classNotFoundException e){// todo auto-enerated catch block e.printstacktrace(); }contructor.newinstance()を使用します
作成するコンストラクターを作成するコンストラクターを指定できます。作成するコンストラクターパラメータータイプを指定することもできます。
/***4。constructor.newinstance()を使用します。 */try {//最初のコンストラクターを選択してBook book4 =(book)book.class.getConstructors()[0] .newinstance(); // book [name = null、authors = null、isbn = null、price = 0.0] system.out.println(book4); / ***指定されたコンストラクターを呼び出してオブジェクトを作成します*/ book4 =(book)book.class.getConstructor(string.class、list.class、string.class、float.class).newinstance( "new instance example"、arrays.aslist( "wang"、 "eric")、 "abc1111111111111111111111111111111111111111111111111111111111111111111111111-def-3333" // book [name = new Instanceの例、著者= [Wang、Eric]、ISBN = ABC1111111-DEF-33333、Price = 60.0] System.out.Println(Book4); } catch(instantiationexception | Illegalaccessexception | IllegalargumentException | InvocationTargetException | SecurityException | Nosuchmethodexception e){// Todo auto-enerated catch block e.printstacktrace(); }class.newinstance()またはcontructor.newinstance()を使用することは、本質的に同じであり、両方とも反射メカニズムを採用します。
脱isizationを使用します
/ ***5。Daserialization*/ try(objectOutputStream OOS = new objectOutputStream(new FileOutputStream( "book.dat")); objectinputStream ois = new objectInputStream(new fileinputStream( "book.dat");){oos.writeobject(book1); book book5 =(book)ois.readobject(); System.out.println(book5); } catch(ioException | classNotFoundException e){// todo auto-fenerated catch block e.printstacktrace(); }もちろん、上記の方法に加えて、JNIやその他の方法を使用してオブジェクトを作成することもできます。そのため、1つずつリストすることはありません。
完全な例コードは次のとおりです。
book.java
パッケージテスト; Import java.io.serializable; import java.util.list;/** * @author wangmengjun * */public class book実装serializable、cloneable {private static final serialversionuid = -6212470156629515269L; / **本のタイトル*/プライベート文字列名; / **著者*/プライベートリスト<String>著者; / ** isbn*/ private string isbn; / **価格*/プライベートフロート価格。 public book(){} / ** * @param name * @param Authors * @param isbn * @param price * / public book(string name、list <string>著者、string isbn、float price){this.name = name; this.authors = authors; this.isbn = isbn; this.price = price; } / ** * @return name * / public string getname(){return name; } / ** * @param name name to set * / public void setname(string name){this.name = name; } / ** * @return the Authors * / public list <String> getAuthors(){return Authors; } / ** * @param Authors著者は * / public void setauthors(list <string>著者){this.authors =著者; } / ** * @return the isbn * / public string getisbn(){return isbn; } / ** * @param isbn set * / public void setisbn(string isbn){this.isbn = isbn; } / ** * @return the price * / public float getPrice(){return price; } / ** * @param価格設定の価格} / *(nonjavadoc) * @see java.lang.object#toString() * / @Override public String toString(){return "book [name =" + name + "、authors =" +著者 + "、isbn =" + isbn + "、price =" + price + "]; } @Override保護されたオブジェクトclone()clonenotsupportedexception {return(book)super.clone(); }}CreateObjectExample.java
パッケージテスト; java.io.fileinputStreamのインポート;インポートjava.io.fileoutputStream; Import java.io.ioexception; Import java.io.objectinputStream; Import java.io.objectputStream; Import java.lang.lang.Reflect.invocationTargetException; @author wangmengjun * */public class createObjectexample {public static void main(string [] args){/** * 1。new */book book1 = new book();を使用してオブジェクトを作成します。 book1.setname( "redis"); book1.setauthors(arrays.aslist( "eric"、 "john")); book1.setprice(59.00f); book1.setisbn( "abbbb-qq677868686-hsdkhkhkh-2324234"); System.out.println(book1); / *** 2。クローンを使用してオブジェクトを作成*/ try {book book2 =(book)book1.clone(); System.out.println(book2); } catch(clonenotsupportedexception e){// todo auto-enerated catch block 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 | Illegalaccessexception | classNotFoundException e){// todo auto-enerated catch block e.printstacktrace(); } /***4。constructor.newinstance()を使用します。 */try {//最初のコンストラクターを選択してBook book4 =(book)book.class.getConstructors()[0] .newinstance(); // book [name = null、authors = null、isbn = null、price = 0.0] system.out.println(book4); / ***指定されたコンストラクターを呼び出してオブジェクトを作成します*/ book4 =(book)book.class.getConstructor(string.class、list.class、string.class、float.class).newinstance( "new instance example"、arrays.aslist( "wang"、 "eric")、 "abc1111111111111111111111111111111111111111111111111111111111111111111111111-def-3333" // book [name = new Instanceの例、著者= [Wang、Eric]、ISBN = ABC1111111111111111111111111111111111111111111111110] System.out.println(book4); } catch(instantiationexception | Illegalaccessexception | IllegalargumentException | InvocationTargetException | SecurityException | Nosuchmethodexception e){// Todo auto-enerated catch block e.printstacktrace(); } / ***5。Daserialization* / try(objectOutputStream OOS = new objectOutputStream(new fileoutputStream( "book.dat")); objectinputStream ois = new objectInputStream( "book.dat");){oos.writeObject(book1); book book5 =(book)ois.readobject(); System.out.println(book5); } catch(ioException | classNotFoundException e){// todo auto-fenerated catch block e.printstacktrace(); }}}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。