Parfois, vous pouvez rencontrer des questions d'entrevue comme:
Quelles sont les méthodes de création d'objets en Java?
En plus de nouveaux, quelles sont les autres façons de créer des objets en Java?
Cet article combine des exemples pour donner plusieurs méthodes Java pour créer des objets. Ici, nous allons ~~~~
Créer avec nouveau
Il s'agit de la plus couramment utilisée. comme:
Livre de livres = nouveau livre ();
Les exemples sont les suivants:
Test de package; Importer java.io.serializable; import java.util.list; / ** * @author wangmengjun * * / public public livre implémente serializable {private static final long SerialVersionUID = -6212470156629515269l; / ** Titre du livre * / nom de chaîne privée; / ** Auteur * / Private List <string> auteurs; / ** ISBN * / Private String ISBN; / ** Prix * / Prix de flotteur privé; Public Book () {} / ** * @param name * @param auteurs * @param isbn * @param prix * / livre public (nom de chaîne, liste <string> auteurs, chaîne isbn, float prix) {this.name = name; this.authors = auteurs; this.isbn = isbn; this.price = prix; } / ** * @return le nom * / public String getName () {return name; } / ** * @param name Le nom pour set * / public void setName (String name) {this.name = name; } / ** * @return Les auteurs * / public list <string> getAuthors () {return auteurs; } / ** * @param auteurs Les auteurs pour définir * / public void setAuthors (list <string> auteurs) {this.authors = auteurs; } / ** * @return le isbn * / public String getisBn () {return isbn; } / ** * @param isbn L'ISBN à définir * / public void setisbn (String isbn) {this.isbn = isbn; } / ** * @return le prix * / public float getPrice () {prix de retour; } / ** * @param prix le prix pour fixer * / public void setPrice (Float Price) {this.price = prix; } / * (non javadoc) * @see java.lang.object # toString () * / @Override public String toString () {return "book [name =" + name + ", auteurs =" + auteurs + ", isbn =" + isbn + ", prix =" + prix + "]";; }} / ** * 1. Créez un objet en utilisant un nouveau * / 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);Utilisez object.clone ()
Si vous souhaitez appeler la méthode Clone, l'objet doit implémenter l'interface clonable et remplacer la méthode clone ().
La classe de livres modifiée est la suivante:
Test de package; Importer java.io.serializable; import java.util.list; / ** * @author wangmengjun * * / public public livre implémente sérialisable, clonable {private static final long serialversionuid = -6212470156629515269l; / ** Titre du livre * / nom de chaîne privée; / ** Auteur * / Private List <string> auteurs; / ** ISBN * / Private String ISBN; / ** Prix * / Prix de flotteur privé; Public Book () {} / ** * @param name * @param auteurs * @param isbn * @param prix * / livre public (nom de chaîne, liste <string> auteurs, chaîne isbn, float prix) {this.name = name; this.authors = auteurs; this.isbn = isbn; this.price = prix; } / ** * @return le nom * / public String getName () {return name; } / ** * @param name Le nom pour set * / public void setName (String name) {this.name = name; } / ** * @return Les auteurs * / public list <string> getAuthors () {return auteurs; } / ** * @param auteurs Les auteurs pour définir * / public void setAuthors (list <string> auteurs) {this.authors = auteurs; } / ** * @return le isbn * / public String getisBn () {return isbn; } / ** * @param isbn L'ISBN à définir * / public void setisbn (String isbn) {this.isbn = isbn; } / ** * @return le prix * / public float getPrice () {prix de retour; } / ** * @param prix le prix pour fixer * / public void setPrice (Float Price) {this.price = prix; } / * (non javadoc) * @see java.lang.object # toString () * / @Override public String toString () {return "book [name =" + name + ", auteurs =" + auteurs + ", isbn =" + isbn + ", prix =" + prix + "]";; } @Override Protected Object Clone () lève ClonenotsupportEdException {return (book) super.clone (); }}Code de test
/ ** * 1. Créez un objet en utilisant un nouveau * / 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. Créez un objet en utilisant clone * / try {book book2 = (book) book1.clone (); System.out.println (Book2); } catch (clonenotsupportEdException e) {// Bloc de catch généré automatiquement de TODO E.PrintStackTrace (); }Utilisez class.newinstance ()
Cela peut être fait directement en utilisant la méthode class.forname ("xxx.xx"). NewInstance () ou xxx.class.newinstance ().
/ ** * 3. Utilisez 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 | illégalAccessException | classNotFoundException e) {// TODO Block de capture généré automatiquement e.printStackTrace (); }Utiliser contrator.newinstance ()
Vous pouvez spécifier un constructeur à créer, tel que la sélection du premier constructeur à créer; Vous pouvez également spécifier un type de paramètre de constructeur à créer.
/ ** * 4. Utilisez Constructor.NewInstance (); * / try {// sélectionnez le premier constructeur pour créer un livre de livres Book4 = (book) book.class.getConstructors () [0] .newInstance (); // book [name = null, auteurs = null, isbn = null, prix = 0,0] System.out.println (book4); / ** * Appelez le constructeur spécifié pour créer un objet * / book4 = (book) book.class.getConstructor (string.class, list.class, string.class, float.class) .newinstance ("New instance Example", arrays.aslist ("wang", "eric"), "ABC11111-def-3333" ", 60.00f); // book [name = nouvel exemple de l'instance, auteurs = [wang, eric], isbn = ABC111111-def-33333, prix = 60.0] System.out.println (book4); } Catch (InstantiationException | IllégalAccessException | IllégalArgumentException | InvocationTargetException | SecurityException | NosuchMethodexception e) {// TODO Block de capture généré automatiquement E.PrintStackTrace (); }Utilisation de class.newinstance () ou contrator.newinstance () est le même en substance, tous deux adoptent le mécanisme de réflexion.
Utilisation de désérialisation
/ ** * 5. Utilisez la désérialisation * / try (objectOutputStream oos = new ObjectOutputStream (new FileOutputStream ("book.dat")); objectInputStream oiS = new ObjectInputStream (new FileInputStream ("book.dat"));) {oos.writeObject (book1); Livre de livres5 = (livre) ois.readObject (); System.out.println (Book5); } catch (ioException | classNotFoundException e) {// TODO Block Catch généré par Auto E.PrintStackTrace (); }Bien sûr, en plus des méthodes ci-dessus, vous pouvez également utiliser JNI et d'autres méthodes pour créer des objets, donc je ne les listerai pas un par un.
L'exemple de code complet est le suivant:
Livre.java
Test de package; Importer java.io.serializable; import java.util.list; / ** * @author wangmengjun * * / public public livre implémente sérialisable, clonable {private static final long serialversionuid = -6212470156629515269l; / ** Titre du livre * / nom de chaîne privée; / ** Auteur * / Private List <string> auteurs; / ** ISBN * / Private String ISBN; / ** Prix * / Prix de flotteur privé; Public Book () {} / ** * @param name * @param auteurs * @param isbn * @param prix * / livre public (nom de chaîne, liste <string> auteurs, chaîne isbn, float prix) {this.name = name; this.authors = auteurs; this.isbn = isbn; this.price = prix; } / ** * @return le nom * / public String getName () {return name; } / ** * @param name Le nom pour set * / public void setName (String name) {this.name = name; } / ** * @return Les auteurs * / public list <string> getAuthors () {return auteurs; } / ** * @param auteurs Les auteurs pour définir * / public void setAuthors (list <string> auteurs) {this.authors = auteurs; } / ** * @return le isbn * / public String getisBn () {return isbn; } / ** * @param isbn L'ISBN à définir * / public void setisbn (String isbn) {this.isbn = isbn; } / ** * @return le prix * / public float getPrice () {prix de retour; } / ** * @param prix le prix pour fixer * / public void setPrice (Float Price) {this.price = prix; } / * (non javadoc) * @see java.lang.object # toString () * / @Override public String toString () {return "book [name =" + name + ", auteurs =" + auteurs + ", isbn =" + isbn + ", prix =" + prix + "]";; } @Override Protected Object Clone () lève ClonenotsupportEdException {return (book) super.clone (); }}CreateObjectExample.java
Test de package; import java.io.fileInputStream; import java.io.fileOutputStream; import java.io.ioexception; import java.io.objectInputStream; import java.io.objectOutStream; import java.lang.reflect.invocationTargexception; importer java.util.Array @author wangmengjun * * / classe publique createObjectExample {public static void main (string [] args) {/ ** * 1. Créer un objet en utilisant un nouveau * / 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. Créez un objet en utilisant clone * / try {book book2 = (book) book1.clone (); System.out.println (Book2); } catch (clonenotsupportEdException e) {// Bloc de catch généré automatiquement de TODO E.PrintStackTrace (); } / ** * 3. Utilisez 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 | illégalAccessException | classNotFoundException e) {// TODO Block de capture généré automatiquement e.printStackTrace (); } / ** * 4. Utilisez Constructor.NewInstance (); * / try {// sélectionnez le premier constructeur pour créer un livre de livres Book4 = (book) book.class.getConstructors () [0] .newInstance (); // book [name = null, auteurs = null, isbn = null, prix = 0,0] System.out.println (book4); / ** * Appelez le constructeur spécifié pour créer un objet * / book4 = (book) book.class.getConstructor (string.class, list.class, string.class, float.class) .newinstance ("New instance Example", arrays.aslist ("wang", "eric"), "ABC11111-def-3333" ", 60.00f); // book [name = nouvel exemple de l'instance, auteurs = [wang, eric], isbn = abc11111-def-33333, prix = 60.0] System.out.println (book4); } Catch (InstantiationException | IllégalAccessException | IllégalArgumentException | InvocationTargetException | SecurityException | NosuchMethodexception e) {// TODO Block de capture généré automatiquement E.PrintStackTrace (); } / ** * 5. Utilisez Deserialization * / try (objectOutputStream oos = new ObjectOutputStream (new FileOutputStream ("book.dat")); objectInputStream ois = new ObjectInputStream (new FileInputStream ("book.dat"));) {oos.writeObject (book1); Livre de livres5 = (livre) ois.readObject (); System.out.println (Book5); } catch (ioException | classNotFoundException e) {// TODO Block Catch généré par Auto E.PrintStackTrace (); }}}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.