Иногда вы можете встретить вопросы интервью, например:
Каковы методы создания объектов в Java?
В дополнение к новому, каковы другие способы создания объектов в Java?
Эта статья объединяет примеры, чтобы дать несколько методов Java для создания объектов. Здесь мы пойдем ~~~~
Создать с новым
Это наиболее часто используемый. нравиться:
Книга книги = новая книга ();
Примеры следующие:
Пакет -тест; импорт java.io.serializable; import java.util.list;/** * @author wangmengjun * */public class book реализует сериализуемые {private static final longervionuid = -6212470156629515269l; / ** Название книги*/ private String name; / ** Автор*/ Private List <string> авторы; / ** ISBN*/ Private String ISBN; / ** Цена*/ Частная цена поплавок; public book () {} / ** * @param name * @param авторы * @param isbn * @param price * / public book (string name, list <string> авторы, строка isbn, float price) {this.name = name; this.authors = авторы; this.isbn = isbn; this.price = цена; } / ** * @return the name * / public String getName () {return name; } / ** * @param name Имя для установки * / public void setname (string name) {this.name = name; } / ** * @return theutors * / public list <string> getauthors () {return authors; } / ** * @param Авторы авторов для установки * / public void setauthors (list <string> авторы) {this.authors = Authors; } / ** * @return the 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 (float price) {this.price = цена; } / * (non-javadoc) * @see java.lang.object#toString () * / @Override public String toString () {return "book [name =" + name + ", outrors =" + authors + ", isbn =" + isbn + ", price =" + price + "]"; }} / *** 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);Используйте object.clone ()
Если вы хотите вызвать метод клона, то объект должен реализовать клонируемый интерфейс и переопределить метод Clone ().
Модифицированный класс книги выглядит следующим образом:
Пакет -тест; импорт java.io.serializable; import java.util.list;/** * @author wangmengjun * */public class book реализует сериализуемые, клонируемые {private static final long serialversionuid = -621247015629515269l; / ** Название книги*/ private String name; / ** Автор*/ Private List <string> авторы; / ** ISBN*/ Private String ISBN; / ** Цена*/ Частная цена поплавок; public book () {} / ** * @param name * @param авторы * @param isbn * @param price * / public book (string name, list <string> авторы, строка isbn, float price) {this.name = name; this.authors = авторы; this.isbn = isbn; this.price = цена; } / ** * @return the name * / public String getName () {return name; } / ** * @param name Имя для установки * / public void setname (string name) {this.name = name; } / ** * @return theutors * / public list <string> getauthors () {return authors; } / ** * @param Авторы авторов для установки * / public void setauthors (list <string> авторы) {this.authors = Authors; } / ** * @return the 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 (float price) {this.price = цена; } / * (non-javadoc) * @see java.lang.object#toString () * / @Override public String toString () {return "book [name =" + name + ", outrors =" + authors + ", isbn =" + isbn + ", price =" + price + "]"; } @Override защищенный объект Clone () бросает ClonenotSupportedException {return (book) super.clone (); }}Тестовый код
/ *** 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. Создайте объект с использованием клона*/ try {book book2 = (book) book1.clone (); System.out.println (Book2); } catch (clonenotsupportedException e) {// todo автоматически сгенерированный блок e.printstacktrace (); }Используйте class.newinstance ()
Это может быть сделано напрямую, используя метод class.forname ("xxx.xx"). 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 | allogalAccessexception | classnotfoundexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); }Используйте Ofructor.NewInstance ()
Вы можете указать конструктор для создания, например, выбор первого конструктора для создания; Вы также можете указать тип параметра конструктора для создания.
/*** 4. Используйте constructor.newinstance (); */try {// Выберите первый конструктор, чтобы создать книгу книги4 = (book) book.class.getConstructors () [0] .newinStance (); // book [name = null, авторы = null, isbn = null, цена = 0,0] system.out.println (book4); /** * Call the specified constructor to create an object*/ book4 = (Book) Book.class.getConstructor(String.class, List.class, String.class, float.class).newInstance("New Instance Example", Arrays.asList("Wang", "Eric"), "abc1111111-def-33333", 60.00f); // book [name = new Endly Пример, Authors = [Wang, Eric], ISBN = ABC11111111-DEF-33333, цена = 60.0] System.out.println (book4); } catch (instantiationException | allogalAccessexception | allogalargumentException | vocociationTargetException | SecurityException | nosuchmethodexception e) {// todo Автогенерированный блок улова e.printstacktrace (); }Использование class.newinstance () или contructor.newinstance () одинаково по сути, оба принимают механизм отражения.
Используя десериализацию
/ *** 5. Использовать Deserialization*/ try (objectOutputStream oos = new objectOutputStream (new FileOutputStream ("book.dat")); ObjectInputStream ois = new ObjectInputStream (new FileInputStream ("book.dat"));) {oos.writeObject (book1); Book Book5 = (книга) OIS.ReadObject (); System.out.println (Book5); } catch (ioException | classnotfoundexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); }Конечно, в дополнение к приведенным выше методам вы также можете использовать JNI и другие методы для создания объектов, поэтому я не буду перечислять их один за другим.
Полный пример кода заключается в следующем:
Book.java
Пакет -тест; импорт java.io.serializable; import java.util.list;/** * @author wangmengjun * */public class book реализует сериализуемые, клонируемые {private static final long serialversionuid = -621247015629515269l; / ** Название книги*/ private String name; / ** Автор*/ Private List <string> авторы; / ** ISBN*/ Private String ISBN; / ** Цена*/ Частная цена поплавок; public book () {} / ** * @param name * @param авторы * @param isbn * @param price * / public book (string name, list <string> авторы, строка isbn, float price) {this.name = name; this.authors = авторы; this.isbn = isbn; this.price = цена; } / ** * @return the name * / public String getName () {return name; } / ** * @param name Имя для установки * / public void setname (string name) {this.name = name; } / ** * @return theutors * / public list <string> getauthors () {return authors; } / ** * @param Авторы авторов для установки * / public void setauthors (list <string> авторы) {this.authors = Authors; } / ** * @return the 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 (float price) {this.price = цена; } / * (non-javadoc) * @see java.lang.object#toString () * / @Override public String toString () {return "book [name =" + name + ", outrors =" + authors + ", isbn =" + isbn + ", price =" + price + "]"; } @Override защищенный объект Clone () бросает ClonenotSupportedException {return (book) super.clone (); }}CreateObjectExample.java
Тест пакета; импорт java.io.fileinputstream; import java.io.fileoutputstream; импорт java.io.ioexception; import java.io.objectinputstream; импорт java.io.objectOutputStream; импорт java.lang.reflect.invocationTargetExcept @author wangmengjun * */public class createObjectExample {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. Создайте объект с использованием клона*/ try {book book2 = (book) book1.clone (); System.out.println (Book2); } catch (clonenotsupportedException e) {// todo автоматически сгенерированный блок 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 | allogalAccessexception | classnotfoundexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } /*** 4. Используйте constructor.newinstance (); */try {// Выберите первый конструктор, чтобы создать книгу книги4 = (book) book.class.getConstructors () [0] .newinStance (); // book [name = null, авторы = null, isbn = null, цена = 0,0] system.out.println (book4); /** * Call the specified constructor to create an object*/ book4 = (Book) Book.class.getConstructor(String.class, List.class, String.class, float.class).newInstance("New Instance Example", Arrays.asList("Wang", "Eric"), "abc1111111-def-33333", 60.00f); // book [name = new Endry Пример, Authors = [Wang, Eric], ISBN = ABC1111111-DEF-33333, цена = 60.0] System.out.println (book4); } catch (instantiationException | allogalAccessexception | allogalargumentException | vocociationTargetException | SecurityException | nosuchmethodexception e) {// todo Автогенерированный блок улова e.printstacktrace (); } / *** 5. Использовать Deserialization* / try (objectOutputStream oos = new ObjectOutputStream (new FileOutputStream ("book.dat")); objectInputStream ois = new ObjectInputStream (new FileInputStream ("book.dat"));) {oos.writeObject (book1); Book Book5 = (книга) OIS.ReadObject (); System.out.println (Book5); } catch (ioException | classnotfoundexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); }}}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.