때로는 다음과 같은 인터뷰 질문에 직면 할 수 있습니다.
자바에서 객체를 만드는 방법은 무엇입니까?
새로운 것 외에도 Java에서 객체를 만드는 다른 방법은 무엇입니까?
이 기사는 예제를 결합하여 몇 가지 Java 방법을 제공하여 개체를 생성합니다. 여기 우리는 ~~~~입니다
새로 만들어냅니다
이것은 가장 일반적으로 사용되는 것입니다. 좋다:
책 책 = 새 책 ();
예는 다음과 같습니다.
패키지 테스트; import java.io.serializable; import java.util.list;/** * @author wangmengjun * */public class book 구현 시리얼이 가능 {private static final long serialversionuid = -6212470156629515269L; / ** 책 제목*/ 개인 문자열 이름; / ** 저자*/ 개인 목록 <string> 저자; / ** ISBN*/ 개인 문자열 ISBN; / ** 가격*/ 개인 플로트 가격; public book () {} / ** * @param name * @param 저자 * @param isbn * @param price * / public book (문자열 이름, list <string> 저자, 문자열 isbn, float price) {this.name = name; this.authors = 저자; this.isbn = isbn; this.price = 가격; } / ** * @return 이름 * / public string getName () {return name; } / ** * @param 이름 설정 * / public void setName (문자열 이름) {this.name = name; } / ** * @저자 * / public list <string> getauthors () {return authors; } / ** * @param 저자 저자는 * / public void setauthors (list <string> 저자) {this.authors = 저자; } / ** * @ISBN * / public String getISBn () {return isbn; } / ** * @param isbn isbn to set * / public void setisbn (String isbn) {this.isbn = isbn; } / ** * @return the price * / public float getPrice () {반환 가격; } / ** * @param 가격 설정 * / public void setPrice (플로트 가격) {this.price = price; } / * (nonjavadoc) * @see java.lang.object#tostring () * / @override public String toString () {return "book [name =" + name + ", authors =" + autherors + ", 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-HSDKHFKHKH-2324234"); System.out.println (Book1);
Object.Clone () 사용
클론 방법을 호출하려면 객체가 클로닝 가능한 인터페이스를 구현하고 클론 () 메소드를 재정의해야합니다.
수정 된 책 수업은 다음과 같습니다.
패키지 테스트; import java.io.serializable; import java.util.list;/** * @author wangmengjun * */public class book 구현, 세리어 리화 가능, 클로닝 가능한 {private static final long serialversionuid = -621247015629515269L; / ** 책 제목*/ 개인 문자열 이름; / ** 저자*/ 개인 목록 <string> 저자; / ** ISBN*/ 개인 문자열 ISBN; / ** 가격*/ 개인 플로트 가격; public book () {} / ** * @param name * @param 저자 * @param isbn * @param price * / public book (문자열 이름, list <string> 저자, 문자열 isbn, float price) {this.name = name; this.authors = 저자; this.isbn = isbn; this.price = 가격; } / ** * @return 이름 * / public string getName () {return name; } / ** * @param 이름 설정 * / public void setName (문자열 이름) {this.name = name; } / ** * @저자 * / public list <string> getauthors () {return authors; } / ** * @param 저자 저자는 * / public void setauthors (list <string> 저자) {this.authors = 저자; } / ** * @ISBN * / public String getISBn () {return isbn; } / ** * @param isbn isbn to set * / public void setisbn (String isbn) {this.isbn = isbn; } / ** * @return the price * / public float getPrice () {반환 가격; } / ** * @param 가격 설정 * / public void setPrice (플로트 가격) {this.price = price; } / * (nonjavadoc) * @see java.lang.object#tostring () * / @override public String toString () {return "book [name =" + name + ", authors =" + autherors + ", isbn =" + isbn + ", price =" + price + "]; } @override Protected Object Clone ()는 ClonenOntSupportedException {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-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 | 불법 행위 exception | classNotFoundException e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }Contructor.NewInstance () 사용
생성 할 첫 번째 생성자를 선택하는 등 생성 할 생성자를 지정할 수 있습니다. 생성 할 생성자 매개 변수 유형을 지정할 수도 있습니다.
/*** 4. 생성자를 사용하십시오 .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 ( "새 인스턴스 예", Arrays.Aslist ( "wang", "eric"), "abc11111111-333333", 60.00f); // book [name = 새 인스턴스 예제, 저자 = [Wang, Eric], isbn = abc1111111-fef-33333, price = 60.0] system.out.println (book4); } catch (InstantiationException | INSTANTIATIONEXCEPTION | INGEGALACCESSException | 불법 행위 Xception | invocationTargetexception | SecurityException | nosuchmethodexception e) {// 자동 생성 된 캐치 블록 E.PrintStackTrace (); }class.newinstance () 또는 contructor.newinstance ()를 사용하는 것은 본질적으로 동일하며 둘 다 반사 메커니즘을 채택합니다.
사제를 사용하여
/ *** 5. deserialization*/ try (ObjectOutputStream OOS = new ObjectOutputStream ( "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 자동 생성 캐치 블록 e.printstacktrace (); }물론 위의 방법 외에도 JNI 및 기타 방법을 사용하여 객체를 만들 수 있으므로 하나씩 나열하지 않습니다.
전체 예제 코드는 다음과 같습니다.
BOOK.java
패키지 테스트; import java.io.serializable; import java.util.list;/** * @author wangmengjun * */public class book 구현, 세리어 리화 가능, 클로닝 가능한 {private static final long serialversionuid = -621247015629515269L; / ** 책 제목*/ 개인 문자열 이름; / ** 저자*/ 개인 목록 <string> 저자; / ** ISBN*/ 개인 문자열 ISBN; / ** 가격*/ 개인 플로트 가격; public book () {} / ** * @param name * @param 저자 * @param isbn * @param price * / public book (문자열 이름, list <string> 저자, 문자열 isbn, float price) {this.name = name; this.authors = 저자; this.isbn = isbn; this.price = 가격; } / ** * @return 이름 * / public string getName () {return name; } / ** * @param 이름 설정 * / public void setName (문자열 이름) {this.name = name; } / ** * @저자 * / public list <string> getauthors () {return authors; } / ** * @param 저자 저자는 * / public void setauthors (list <string> 저자) {this.authors = 저자; } / ** * @ISBN * / public String getISBn () {return isbn; } / ** * @param isbn isbn to set * / public void setisbn (String isbn) {this.isbn = isbn; } / ** * @return the price * / public float getPrice () {반환 가격; } / ** * @param 가격 설정 * / public void setPrice (플로트 가격) {this.price = price; } / * (nonjavadoc) * @see java.lang.object#tostring () * / @override public String toString () {return "book [name =" + name + ", authors =" + autherors + ", isbn =" + isbn + ", price =" + price + "]; } @override Protected Object Clone ()는 ClonenOntSupportedException {return (Book) Super.Clone (); }}CreateObjectexample.java
패키지 테스트; 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.Util.Array; @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 | 불법 행위 exception | classNotFoundException e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } /*** 4. 생성자를 사용하십시오 .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 ( "새 인스턴스 예", Arrays.Aslist ( "wang", "eric"), "abc11111111-333333", 60.00f); // book [name = 새 인스턴스 예제, 저자 = [Wang, Eric], isbn = abc111111-2ef-33333, price = 60.0] system.out.println (book4); } catch (InstantiationException | INSTANTIATIONEXCEPTION | INGEGALACCESSException | 불법 행위 Xception | invocationTargetexception | SecurityException | nosuchmethodexception e) {// 자동 생성 된 캐치 블록 E.PrintStackTrace (); } / *** 5. deserialization* / try (ObjectOutoutPutStream OOS = new ObjectOutputStream ( "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 자동 생성 캐치 블록 e.printstacktrace (); }}}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.