A veces, puede encontrar preguntas de la entrevista como:
¿Cuáles son los métodos para crear objetos en Java?
Además de nuevo, ¿cuáles son las otras formas de crear objetos en Java?
Este artículo combina ejemplos para dar varios métodos Java para crear objetos. Aquí vamos ~~~~
Crear con nuevo
Este es el más utilizado. como:
Libro libro = nuevo libro ();
Los ejemplos son los siguientes:
prueba de paquete; import java.io.serializable; import java.util.list;/** * @author wangmengjun * */public class Book implementa serializable {private static final long serialversionUid = -6212470156629515269l; / ** Título del libro*/ Nombre de cadena privada; / ** Autor*/ Lista privada <String> autores; / ** ISBN*/ String private ISBN; / ** Precio*/ Precio de flotación privada; libro público () {} / ** * @param name * @param autores * @param isbn * @param precio * / libro público (nombre de cadena, list <tring> autores, cadena isbn, precio float) {this.name = name; this.authors = autores; this.isbn = isbn; this.price = precio; } / ** * @return el nombre * / public String getName () {return name; } / ** * @param nombre El nombre para establecer * / public void setName (nombre de cadena) {this.name = name; } / ** * @return los autores * / public List <String> getAuthors () {return authors; } / ** * @param autores Los autores para establecer * / public void setAuthors (list <string> autores) {this.authors = authors; } / ** * @return el ISBN * / public String getIsBn () {return isbn; } / ** * @param isbn El isbn para establecer * / public void setisbn (string isbn) {this.isbn = isbn; } / ** * @return el precio * / public float getPrice () {precio de retorno; } / ** * @param precio el precio para establecer * / public void setPrice (precio de flotación) {this.price = precio; } / * (no javadoc) * @see java.lang.object#toString () * / @Override public string toString () {return "book [name =" + name + ", authors =" + authors + ", isbn =" + isbn + ", precio =" + precio + "]"; }} / *** 1. Cree un objeto usando nuevo*/ Libro Book1 = nuevo libro (); book1.setName ("Redis"); book1.setAuthors (Arrays.aslist ("Eric", "John")); book1.setPrice (59.00f); book1.setisbn ("ABBB-QQ677868686-HSDKHFKHKH-2324234"); System.out.println (Book1);Use object.clone ()
Si desea llamar al método Clone, el objeto debe implementar la interfaz clonable y anular el método Clone ().
La clase de libro modificada es la siguiente:
prueba de paquete; import java.io.Serializable; import java.util.list;/** * @author wangmengjun * */public class Book implementa serializable, clonable {private estático final long SerialVersionUid = -6212470156629515269l; / ** Título del libro*/ Nombre de cadena privada; / ** Autor*/ Lista privada <String> autores; / ** ISBN*/ String private ISBN; / ** Precio*/ Precio de flotación privada; libro público () {} / ** * @param name * @param autores * @param isbn * @param precio * / libro público (nombre de cadena, list <tring> autores, cadena isbn, precio float) {this.name = name; this.authors = autores; this.isbn = isbn; this.price = precio; } / ** * @return el nombre * / public String getName () {return name; } / ** * @param nombre El nombre para establecer * / public void setName (nombre de cadena) {this.name = name; } / ** * @return los autores * / public List <String> getAuthors () {return authors; } / ** * @param autores Los autores para establecer * / public void setAuthors (list <string> autores) {this.authors = authors; } / ** * @return el ISBN * / public String getIsBn () {return isbn; } / ** * @param isbn El isbn para establecer * / public void setisbn (string isbn) {this.isbn = isbn; } / ** * @return el precio * / public float getPrice () {precio de retorno; } / ** * @param precio el precio para establecer * / public void setPrice (precio de flotación) {this.price = precio; } / * (no javadoc) * @see java.lang.object#toString () * / @Override public string toString () {return "book [name =" + name + ", authors =" + authors + ", isbn =" + isbn + ", precio =" + precio + "]"; } @Override Protected Object clone () lanza clonenotsupportedException {return (book) super.clone (); }}Código de prueba
/ *** 1. Cree un objeto usando nuevo*/ Libro Book1 = nuevo libro (); book1.setName ("Redis"); book1.setAuthors (Arrays.aslist ("Eric", "John")); book1.setPrice (59.00f); book1.setisbn ("ABBB-QQ677868686-HSDKHFKHKH-2324234"); System.out.println (Book1); / *** 2. Cree un objeto usando clon*/ try {book book2 = (book) book1.clone (); System.out.println (Book2); } Catch (clonenotsupportedException e) {// TODO BLOQUE DE CATCA AUTO GENERADA E.PRINTSTACKTRACE (); }Use class.newinstance ()
Se puede hacer directamente usando la clase.forname ("xxx.xx"). NewInstance () método o xxx.class.newinstance ().
/*** 3. Use class.newinstance (); */ try {book book3 = (book) class.forname ("test.book"). NewInstance (); System.out.println (Book3); book3 = book.class.newinstance (); System.out.println (Book3); } Catch (InstanciationException | ilegalAccessException | ClassNotFoundException e) {// TODO BLOCK AUTO GENERADO E.PRINTSTACKTRACE (); }Use Contructor.newinstance ()
Puede especificar un constructor para crear, como seleccionar el primer constructor para crear; También puede especificar un tipo de parámetro de constructor para crear.
/*** 4. Use constructor.newinstance (); */try {// Seleccione el primer constructor para crear book book4 = (book) book.class.getConstructors () [0] .newinstance (); // book [name = null, authors = null, isbn = null, precio = 0.0] system.out.println (book4); / *** Llame al constructor especificado para crear un objeto*/ book4 = (book) book.class.getConstructor (string.class, list.class, string.class, float.class) .newinstance ("nuevo ejemplo de instancia", matrizs.aslist ("wang", "Eric"), "ABC111111111111-deff-3333", 60.00f); // libro [nombre = nuevo ejemplo de instancia, authors = [Wang, Eric], ISBN = ABC1111111-Def-33333, Price = 60.0] System.out.println (Book4); } Catch (InstanciationException | ilegalAccessException | ilegalArgumentException | InvocationTargetException | SecurityException | NosuchMethodException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); }Usar class.newinstance () o contructor.newinstance () es lo mismo en esencia, ambos adoptan el mecanismo de reflexión.
Usando la deserialización
/ *** 5. Use la deserialización*/ try (ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream ("Book.dat")); ObjectInputStream OIS = new ObjectInputStream (new FileInputStream ("Book.dat"));) {oos.writeObject (book1); Libro book5 = (libro) ois.readObject (); System.out.println (Book5); } Catch (IOException | ClassNotFoundException e) {// TODO BLOCK GENERADO AUTO GENERADO E.PRINTSTACKTRACE (); }Por supuesto, además de los métodos anteriores, también puede usar JNI y otros métodos para crear objetos, por lo que no los enumeraré uno por uno.
El código de ejemplo completo es el siguiente:
Libro.java
prueba de paquete; import java.io.Serializable; import java.util.list;/** * @author wangmengjun * */public class Book implementa serializable, clonable {private estático final long SerialVersionUid = -6212470156629515269l; / ** Título del libro*/ Nombre de cadena privada; / ** Autor*/ Lista privada <String> autores; / ** ISBN*/ String private ISBN; / ** Precio*/ Precio de flotación privada; libro público () {} / ** * @param name * @param autores * @param isbn * @param precio * / libro público (nombre de cadena, list <tring> autores, cadena isbn, precio float) {this.name = name; this.authors = autores; this.isbn = isbn; this.price = precio; } / ** * @return el nombre * / public String getName () {return name; } / ** * @param nombre El nombre para establecer * / public void setName (nombre de cadena) {this.name = name; } / ** * @return los autores * / public List <String> getAuthors () {return authors; } / ** * @param autores Los autores para establecer * / public void setAuthors (list <string> autores) {this.authors = authors; } / ** * @return el ISBN * / public String getIsBn () {return isbn; } / ** * @param isbn El isbn para establecer * / public void setisbn (string isbn) {this.isbn = isbn; } / ** * @return el precio * / public float getPrice () {precio de retorno; } / ** * @param precio el precio para establecer * / public void setPrice (precio de flotación) {this.price = precio; } / * (no javadoc) * @see java.lang.object#toString () * / @Override public string toString () {return "book [name =" + name + ", authors =" + authors + ", isbn =" + isbn + ", precio =" + precio + "]"; } @Override Protected Object clone () lanza clonenotsupportedException {return (book) super.clone (); }}CreateObjectExample.java
prueba de paquete; import java.io.fileInputStream; import java.io.fileOutputStream; import java.io.ioException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflect.invocationTargetException; import java.util.arrays; import java.lang./** ** **. @author wangmengjun * */public class createObjectExample {public static void main (string [] args) {/** * 1. Cree un objeto usando nuevo */book book1 = new Book (); book1.setName ("Redis"); book1.setAuthors (Arrays.aslist ("Eric", "John")); book1.setPrice (59.00f); book1.setisbn ("ABBB-QQ677868686-HSDKHFKHKH-2324234"); System.out.println (Book1); / *** 2. Cree un objeto usando clon*/ try {book book2 = (book) book1.clone (); System.out.println (Book2); } Catch (clonenotsupportedException e) {// TODO BLOQUE DE CATCA AUTO GENERADA E.PRINTSTACKTRACE (); } /*** 3. Use class.newinStance (); */ try {book book3 = (book) class.forname ("test.book"). NewInstance (); System.out.println (Book3); book3 = book.class.newinstance (); System.out.println (Book3); } Catch (InstanciationException | ilegalAccessException | ClassNotFoundException e) {// TODO BLOCK AUTO GENERADO E.PRINTSTACKTRACE (); } /*** 4. Use constructor.newinstance (); */try {// Seleccione el primer constructor para crear book book4 = (book) book.class.getConstructors () [0] .newinstance (); // book [name = null, authors = null, isbn = null, precio = 0.0] system.out.println (book4); / *** Llame al constructor especificado para crear un objeto*/ book4 = (book) book.class.getConstructor (string.class, list.class, string.class, float.class) .newinstance ("nuevo ejemplo de instancia", matrizs.aslist ("wang", "Eric"), "ABC111111111111-deff-3333", 60.00f); // libro [nombre = nuevo ejemplo de instancia, authors = [Wang, Eric], ISBN = ABC111111-Def-33333, Price = 60.0] System.out.println (Book4); } Catch (InstanciationException | ilegalAccessException | ilegalArgumentException | InvocationTargetException | SecurityException | NosuchMethodException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } / *** 5. Use la deserialización* / try (ObjectOutputStream OOS = new ObjectOutputStream (new FileOutputStream ("Book.dat")); ObjectInputStream OIS = New ObjectInputStream (new FileInputStream ("Book.dat");) {OOS.WriteObject (Book1); Libro book5 = (libro) ois.readObject (); System.out.println (Book5); } Catch (IOException | ClassNotFoundException e) {// TODO BLOCK GENERADO AUTO GENERADO E.PRINTSTACKTRACE (); }}}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.