티스토리 뷰

DZone에서 재미있는 글을 봐서 해당 글을 번역하고 정리해보겠다.

 

주제는 자바에서 객체를 생성하는 5가지 방법이다.

평소에 "new"키워드만 사용했기에 다른 방법이 있다는 것이 신기했다. 그래서 소개해보고자 글을 작성한다.

 

(아래는 원본 게시글입니다!!!)

https://dzone.com/articles/5-different-ways-to-create-objects-in-java-with-ex

 

Five Different Ways to Create Objects in Java - DZone

Java devs create objects daily, but we often use dependency management systems e.g. Spring to create these objects. But, there are more ways to create objects.

dzone.com

 

1. new 키워드 사용

객체를 생성하는 가장 일반적인 방법이고 매우 간단한 방법이다.

Example 클래스의 기본 생성자가 호출된다.

(클래스에 별도의 생성자를 작성하지 않는다면 JVM에서 기본생성자를 넣어준다.)

 

2. Class 클래스의 newInstance() 클래스 사용

Class 클래스의 newInstance()를 활용하는 방법이다. 두 가지 방법이 존재한다.

  • 첫번째는 클래스의 Class 클래스의 forName() 메서드를 통해 클래스의 경로를 입력한 후 newInstance()를 한 뒤 명시적 Boxing을 통해 객체를 가져오는 방법이다.
  • 두번째는 생성하고자 하는 클래스의 “.class”를 통해 newInstance()를 사용해서 생성하는 방법이다.

주의)

Class 클래스의 newInstance()는 Java9에서 deprecated되었고,

Java11부터 완전히 제거되어 다른 방법을 사용하는 것이 좋다.

 

3. .class 후 getConstructor()를 사용

클래스 객체('.class')를 사용하여 클래스화 관련된 정보를 가져오고 getConstructor()를 통해 생성자를 가져온다. 그리고  newInstance() 메서드를 통해 새로운 객체를 생성한다.

getConstructor()에 가져오고자 하는 생성자 파라미터에 맞는 파라미터 타입 넘겨주면 그에 맞는 생성자를 가져올 수도 있다.

하나는 기본 생성자를 사용하고 파라미터를 넘긴 getConstructor()를 사용하면 지정한 생성자를 가져와서 객체를 생성한 것을 볼 수 있다.

4. clone() 메서드 사용하기

Object 클래스의 clone 메서드를 사용하면 기존 인스턴스의 내용을 복사하여 다른 인스턴스를 생성한다. clone()을 사용하기 위해서는 Cloneable 인터페이스를 구현하고 그 안에 clone()을 정의해야 한다. 이 경우에는 생성자는 호출되지 않는다.

example4 인스턴스 내용을 복사해서 새로운 인스턴스를 생성했다.

 

주의)

이펙티브 자바에서도 clone()의 재정의는 주의해서 진행하라고 한다. clone()은 기본적으로 얕은 복사를 수행하기에 객체의 참조 관계가 복잡한 경우 다른 인스턴스 두개가 같은 인스턴스를 참조할 수도 있다. 그렇기에 조심해서 정의하고 사용해야한다.

 

5. 역직렬화 사용

객체를 직렬화한 다음 역직렬화할 때마다 JVM은 별도의 객체를 생성한다. 역직렬화에서 JVM은 객체를 생성하기 위해 생성자를 사용하지 않기 때문에 이 방법은 생성자를 호출하지 않는다.

 

 

1, 2, 3번 방법은 기본 생성자를 호출하며 4, 5번 방법은 기본생성자를 호출하지 않는 방법이다.


정리

오늘은 자바에서 객체를 생성하는 5가지 방법에 대해서 알아보았다.

당연히 개발을하며 객체를 생성할 떄 "new" 키워드 외에는 사용할까 싶지만 흥미로운 내용이였다. 

 

사용한 Example 클래스

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함