Às vezes, você pode encontrar perguntas de entrevista como:
Quais são os métodos de criação de objetos em Java?
Além de novo, quais são as outras maneiras de criar objetos em Java?
Este artigo combina exemplos para fornecer vários métodos Java para criar objetos. Aqui vamos nós ~~~~
Criar com novo
Este é o mais comumente usado. como:
Livro do livro = novo livro ();
Exemplos são os seguintes:
teste do pacote; importar java.io.Serializable; importar java.util.list;/** * @author wangmengjun * */public class Book implementa serializável {private estático final serialversionuid = -621247015666666515269l; / ** Título do livro*/ Nome de String Private; / ** Autor*/ Lista privada <String> Autores; / ** ISBN*/ String privada ISBN; / ** Preço*/ preço de flutuação privada; public book () {} / ** * Nome @param * @param autores * @param isbn * @param preço * / public book (nome da string, list <tring> autores, string isbn, preço float) {this.name = name; this.authors = autores; this.isbn = isbn; this.price = preço; } / ** * @RETURN O nome * / public String getName () {Return Name; } / ** * @param nome o nome para definir * / public void setName (nome da string) {this.name = name; } / ** * @RETURN Os autores * / Lista pública <String> getAuthors () {return autores; } / ** * @param autores Os autores para definir * / public void setauthores (list <tring> autores) {this.authors = autores; } / ** * @return the iSbn * / public string getisbn () {return isbn; } / ** * @param isbn o iSbn para definir * / public void setIsBn (string isbn) {this.isbn = isbn; } / ** * @RETURN O preço * / public float getPrice () {preço de retorno; } / ** * @param preço o preço para definir * / public void setPrice (preço float) {this.price = price; } / * (não javadoc) * @see java.lang.Object#tostring () * / @Override public string tostring () {return "book [name =" + name + ", autores =" + autores + ", isbn =" + isbn + ", price =" + preço + "]"]; }} / *** 1. Crie um objeto usando novo*/ livro de livros1 = novo livro (); Book1.setName ("Redis"); Book1.setAuthors (Arrays.asList ("Eric", "John")); Book1.setPrice (59.00F); book1.setisbn ("abbb-qq677868686-hsdkhfkhkh-2324234"); System.out.println (livro1);Use Object.Clone ()
Se você deseja chamar o método clone, o objeto precisará implementar a interface clonável e substituir o método clone ().
A aula de livro modificada é a seguinte:
teste do pacote; importar java.io.Serializable; importar java.util.list;/** * @author wangmengjun * */public class Livro implementa serializável, clonável {private estático final serialversionuid = -6212470156629515269l; / ** Título do livro*/ Nome de String Private; / ** Autor*/ Lista privada <String> Autores; / ** ISBN*/ String privada ISBN; / ** Preço*/ preço de flutuação privada; public book () {} / ** * Nome @param * @param autores * @param isbn * @param preço * / public book (nome da string, list <tring> autores, string isbn, preço float) {this.name = name; this.authors = autores; this.isbn = isbn; this.price = preço; } / ** * @RETURN O nome * / public String getName () {Return Name; } / ** * @param nome o nome para definir * / public void setName (nome da string) {this.name = name; } / ** * @RETURN Os autores * / Lista pública <String> getAuthors () {return autores; } / ** * @param autores Os autores para definir * / public void setauthores (list <tring> autores) {this.authors = autores; } / ** * @return the iSbn * / public string getisbn () {return isbn; } / ** * @param isbn o iSbn para definir * / public void setIsBn (string isbn) {this.isbn = isbn; } / ** * @RETURN O preço * / public float getPrice () {preço de retorno; } / ** * @param preço o preço para definir * / public void setPrice (preço float) {this.price = price; } / * (não javadoc) * @see java.lang.Object#tostring () * / @Override public string tostring () {return "book [name =" + name + ", autores =" + autores + ", isbn =" + isbn + ", price =" + preço + "]"]; } @Override Protected Object clone () lança CLONENOTSupportEdException {return (book) super.clone (); }}Código de teste
/ *** 1. Crie um objeto usando novo*/ livro de livros1 = novo livro (); Book1.setName ("Redis"); Book1.setAuthors (Arrays.asList ("Eric", "John")); Book1.setPrice (59.00F); book1.setisbn ("abbb-qq677868686-hsdkhfkhkh-2324234"); System.out.println (livro1); / *** 2. Crie um objeto usando clone*/ try {book book2 = (book) book1.clone (); System.out.println (livro2); } catch (clonenotsupportEdException e) {// TODO BLOCO DE CATAGEM AUTOGERATO E.PRINTSTACKTRACE (); }Use Class.NewInstance ()
Isso pode ser feito diretamente usando o clem.ForName ("xxx.xx"). NewInstance () Método ou xxx.class.newInstance ().
/*** 3. Use Class.NewInstance (); */ Try {Book Book3 = (Book) class.Forname ("test.book"). NewInstance (); System.out.println (livro3); livro3 = book.class.newInstance (); System.out.println (livro3); } catch (instantiationException | IllegalAccessException | ClassNotFoundException e) {// TODO BLOCO DE CAPAGEM AUTOGERATION E.PrintStackTrace (); }Use Contutor.NewInstance ()
Você pode especificar um construtor a ser criado, como a seleção do primeiro construtor para criar; Você também pode especificar um tipo de parâmetro construtor para criar.
/*** 4. Use o construtor.newInstance (); */tente {// Selecione o primeiro construtor para criar o livro do livro 4 = (book) book.class.getConstructors () [0] .NewInstance (); // livro [nome = null, autores = null, isbn = null, preço = 0,0] System.out.println (livro4); / *** Ligue para o construtor especificado para criar um objeto*/ book4 = (book) book.class.getConstructor (string.class, list.class, string.class, float.class) .NewInstance ("ABC11111-SHEF-S); // livro [nome = novo exemplo de instância, autores = [Wang, Eric], ISBN = ABC111111-DEF-33333, Price = 60.0] System.out.println (livro4); } Catch (InstantionActionce | }Usando classe.NewInstance () ou Contutor.NewInstance () é o mesmo em essência, ambos adotam o mecanismo de reflexão.
Usando a deserialização
/ *** 5. Use a desertalização*/ try (objectOutputStream ooS = new ObjectOutputStream (new FileOutputStream ("book.dat")); objectInputStream ois = new objectInputStream (new FileInputStream ("book.dat");) {oos.writeObject (book1); Livro do livro5 = (livro) OIS.readObject (); System.out.println (livro5); } catch (ioException | ClassNotFoundException e) {// TODO BLOCO DE CATAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }Obviamente, além dos métodos acima, você também pode usar o JNI e outros métodos para criar objetos, para não listá -los um por um.
O código de exemplo completo é o seguinte:
Book.java
teste do pacote; importar java.io.Serializable; importar java.util.list;/** * @author wangmengjun * */public class Livro implementa serializável, clonável {private estático final serialversionuid = -6212470156629515269l; / ** Título do livro*/ Nome de String Private; / ** Autor*/ Lista privada <String> Autores; / ** ISBN*/ String privada ISBN; / ** Preço*/ preço de flutuação privada; public book () {} / ** * Nome @param * @param autores * @param isbn * @param preço * / public book (nome da string, list <tring> autores, string isbn, preço float) {this.name = name; this.authors = autores; this.isbn = isbn; this.price = preço; } / ** * @RETURN O nome * / public String getName () {Return Name; } / ** * @param nome o nome para definir * / public void setName (nome da string) {this.name = name; } / ** * @RETURN Os autores * / Lista pública <String> getAuthors () {return autores; } / ** * @param autores Os autores para definir * / public void setauthores (list <string> autores) {this.authors = autores; } / ** * @return the iSbn * / public string getisbn () {return isbn; } / ** * @param isbn o iSbn para definir * / public void setIsBn (string isbn) {this.isbn = isbn; } / ** * @RETURN O preço * / public float getPrice () {preço de retorno; } / ** * @param preço o preço para definir * / public void setPrice (preço float) {this.price = price; } / * (não javadoc) * @see java.lang.Object#tostring () * / @Override public string tostring () {return "book [name =" + name + ", autores =" + autores + ", isbn =" + isbn + ", price =" + preço + "]"]; } @Override Protected Object clone () lança clonenotsupportedException {return (book) super.clone (); }}CreateObjectExample.java
teste de pacote teste; importar java.io.fileOutputStream; importar java.io.ioException; importar java.io.objectinputStream; import java.io.ObjectStutream; import java.lang.reflect.invocationTargeTexception; ImmportiTream; @author wangmengjun * */public class CreateObjectExample {public static void main (string [] args) {/** * 1. Crie um objeto usando o novo */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 (livro1); / *** 2. Crie um objeto usando clone*/ try {book book2 = (book) book1.clone (); System.out.println (livro2); } catch (clonenotsupportEdException e) {// TODO BLOCO DE CATAGEM AUTOGERATO E.PRINTSTACKTRACE (); } /*** 3. Use Class.NewInstance (); */ Try {Book Book3 = (Book) class.Forname ("test.book"). NewInstance (); System.out.println (livro3); livro3 = book.class.newInstance (); System.out.println (livro3); } catch (instantiationException | IllegalAccessException | ClassNotFoundException e) {// TODO BLOCO DE CAPAGEM AUTOGERATION E.PrintStackTrace (); } /*** 4. Use o construtor.newInstance (); */tente {// Selecione o primeiro construtor para criar o livro do livro 4 = (book) book.class.getConstructors () [0] .NewInstance (); // livro [nome = null, autores = null, isbn = null, preço = 0,0] System.out.println (livro4); / *** Ligue para o construtor especificado para criar um objeto*/ book4 = (book) book.class.getConstructor (string.class, list.class, string.class, float.class) .NewInstance ("ABC11111-SHEF-S); // livro [nome = novo exemplo de instância, autores = [Wang, Eric], ISBN = ABC111111-DEF-33333, Price = 60.0] System.out.println (livro4); } Catch (InstantionActionce | } / *** 5. Use a deserivação* / try (objectOutputStream ooS = new ObjectOutputStream (new FileOutputStream ("book.dat")); objectInputStream ois = new ObjecjustIpIpTream (new FileInputStream ("book.dat"));) {ooS.WriteObject (book1); Livro do livro5 = (livro) OIS.readObject (); System.out.println (livro5); } catch (ioException | ClassNotFoundException e) {// TODO BLOCO DE CATAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }}}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.