Java 객체 작성 방법
Java에서 객체를 작성하는 방법은 무엇입니까?
new 이외에 자바 창설 대상은 몇 가지 방식이 있습니까?
본고는 예를 결합하여 몇 가지 자바 창설 대상을 제시하는 방법을 제시한다. Here we go~~~
new로 만들기
이것은 가장 자주 사용하는 것이다.예:
Book book = new Book();
예는 다음과 같습니다.
package test;
import java.io.Serializable;
import java.util.List;
/**
* @author wangmengjun
*
*/
public class Book implements Serializable{
private static final long serialVersionUID = -6212470156629515269L;
/** */
private String name;
/** */
private List<String> authors;
/**ISBN*/
private String isbn;
/** */
private float price;
public Book() {
}
/**
* @param name
* @param authors
* @param isbn
* @param price
*/
public Book(String name, List<String> authors, String isbn, float price) {
this.name = name;
this.authors = authors;
this.isbn = isbn;
this.price = price;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the authors
*/
public List<String> getAuthors() {
return authors;
}
/**
* @param authors the authors to set
*/
public void setAuthors(List<String> authors) {
this.authors = authors;
}
/**
* @return the isbn
*/
public String getIsbn() {
return isbn;
}
/**
* @param isbn the isbn to set
*/
public void setIsbn(String isbn) {
this.isbn = isbn;
}
/**
* @return the price
*/
public float getPrice() {
return price;
}
/**
* @param price the price to set
*/
public void setPrice(float price) {
this.price = price;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Book [name=" + name + ", authors=" + authors + ", 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()clone 방법을 호출하려면, 이 Object는 Cloneable 인터페이스를 실현하고, clone () 방법을 다시 써야 합니다.
수정된 Book 클래스는 다음과 같습니다.
package test;
import java.io.Serializable;
import java.util.List;
/**
* @author wangmengjun
*
*/
public class Book implements Serializable, Cloneable {
private static final long serialVersionUID = -6212470156629515269L;
/** */
private String name;
/** */
private List<String> authors;
/**ISBN*/
private String isbn;
/** */
private float price;
public Book() {
}
/**
* @param name
* @param authors
* @param isbn
* @param price
*/
public Book(String name, List<String> authors, String isbn, float price) {
this.name = name;
this.authors = authors;
this.isbn = isbn;
this.price = price;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the authors
*/
public List<String> getAuthors() {
return authors;
}
/**
* @param authors the authors to set
*/
public void setAuthors(List<String> authors) {
this.authors = authors;
}
/**
* @return the isbn
*/
public String getIsbn() {
return isbn;
}
/**
* @param isbn the isbn to set
*/
public void setIsbn(String isbn) {
this.isbn = isbn;
}
/**
* @return the price
*/
public float getPrice() {
return price;
}
/**
* @param price the price to set
*/
public void setPrice(float price) {
this.price = price;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Book [name=" + name + ", authors=" + authors + ", isbn=" + isbn + ", price="
+ price + "]";
}
@Override
protected Object clone() throws CloneNotSupportedException {
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. clone
*/
try {
Book book2 = (Book) book1.clone();
System.out.println(book2);
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
클래스를 사용합니다.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 | IllegalAccessException | ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Contructor를 사용합니다.newInstance()첫 번째 구조기 생성을 선택하면 구조기를 지정할 수 있습니다.구조 함수 매개 변수 형식을 지정해서 만들 수도 있습니다.
/**
* 4. Constructor.newInstance();
*/
try {
// Book
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("New Instance Example", Arrays.asList("Wang", "Eric"),
"abc1111111-def-33333", 60.00f);
//Book [name=New Instance Example, authors=[Wang, Eric], isbn=abc1111111-def-33333, price=60.0]
System.out.println(book4);
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException
| InvocationTargetException | SecurityException | NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
클래스를 사용합니다.newInstance() 또는 Contructor.newInstance()는 본질이 같고 반사 메커니즘을 사용합니다.반서열화 사용
/**
* 5.
*/
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("book.dat"));
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("book.dat"));) {
oos.writeObject(book1);
Book book5 = (Book) ois.readObject();
System.out.println(book5);
} catch (IOException | ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
물론 상술한 몇 가지 방식 외에 JNI 등을 사용하여 대상을 만들 수 있으니 여기는 일일이 열거하지 않겠습니다.전체 샘플 코드는 다음과 같습니다.
Book.java
package test;
import java.io.Serializable;
import java.util.List;
/**
* @author wangmengjun
*
*/
public class Book implements Serializable, Cloneable {
private static final long serialVersionUID = -6212470156629515269L;
/** */
private String name;
/** */
private List<String> authors;
/**ISBN*/
private String isbn;
/** */
private float price;
public Book() {
}
/**
* @param name
* @param authors
* @param isbn
* @param price
*/
public Book(String name, List<String> authors, String isbn, float price) {
this.name = name;
this.authors = authors;
this.isbn = isbn;
this.price = price;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the authors
*/
public List<String> getAuthors() {
return authors;
}
/**
* @param authors the authors to set
*/
public void setAuthors(List<String> authors) {
this.authors = authors;
}
/**
* @return the isbn
*/
public String getIsbn() {
return isbn;
}
/**
* @param isbn the isbn to set
*/
public void setIsbn(String isbn) {
this.isbn = isbn;
}
/**
* @return the price
*/
public float getPrice() {
return price;
}
/**
* @param price the price to set
*/
public void setPrice(float price) {
this.price = price;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Book [name=" + name + ", authors=" + authors + ", isbn=" + isbn + ", price="
+ price + "]";
}
@Override
protected Object clone() throws CloneNotSupportedException {
return (Book) super.clone();
}
}
CreateObjectExample.java
package test;
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.util.List;
/**
* @author wangmengjun
*
*/
public class CreateObjectExample {
public static void main(String[] args) {
/**
* 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. clone
*/
try {
Book book2 = (Book) book1.clone();
System.out.println(book2);
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
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 | IllegalAccessException | ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**
* 4. Constructor.newInstance();
*/
try {
// Book
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("New Instance Example", Arrays.asList("Wang", "Eric"),
"abc1111111-def-33333", 60.00f);
//Book [name=New Instance Example, authors=[Wang, Eric], isbn=abc1111111-def-33333, price=60.0]
System.out.println(book4);
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException
| InvocationTargetException | SecurityException | NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**
* 5.
*/
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("book.dat"));
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("book.dat"));) {
oos.writeObject(book1);
Book book5 = (Book) ois.readObject();
System.out.println(book5);
} catch (IOException | ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.