Java에서는 다음과 같이 인스턴스(객체)를 만드는 방법이 있다.
new |
일반적으로 인스턴스는 Java의 예약어 new를 사용해서 만든다. 다음과 같이 하면 Something 클래스의 인스턴스를 만들고 변수 obj에 대입할 수 있다.
--> obj라는 이름을 가지는 Something 클래스 타입의 객체를 가진다 라고 말할 수 있겠다.
Something obj = new Something();
이 경우 클래스 이름(여기에서는 Something)을 소스 안에 기술할 필요가 있다.
clone()
clone() |
Prototype 패턴에서 등장했던 clone 메소드를 사용하면 이미 존재하는 인스턴스를 기초로 새로운 인스턴스를 만들 수 있다. 다음과 같이 하면 자신(this)을 기초로 새로운 인스턴스(객체)를 만들 수 있다(단, 생성자는 호출되지 않는다).
java.lang |
class Something {
...
public Something createClone() {
Something obj = null;
try {
obj = (Something)clone();
} catch ( CloneNotSupportedException e ) {
e.printStackTrace();
}
return obj;
}
}
newInstance()
newInstance() |
java.lang.Class 클래스의 newInstance 메소드를 사용하면 Class의 인스턴스(객체)를 기초로 그 Class가 표시하고 있는 클래스의 인스턴스(객체)를 만들 수 있다(인수 없는 생성자가 호출된다).
newInstancepublic T newInstance()
|
다음은 newInstance의 예입니다. Something 클래스의 인스턴스 someobj가 있다면 다음 식에서 Something 클래스의 인스턴스를 새롭게 만들 수 있다.
someobj.getClass().newInstance();
실제로 newInstance 메소드는 InstantiationException이나 IllegalAccessException을 예외로 제공하기 때문에 try{ } catch() {}로 묶든지 메소드에 throws을 선언해야 한다.
이 글은 스프링노트에서 작성되었습니다.
'Java > Language' 카테고리의 다른 글
자바의 새로운 기술, JAVAFX의 등장. 우리나라에는 아직? (0) | 2009.05.17 |
---|---|
상속은 견고한 연결이고 위임은 느슨한 연결이다. (0) | 2009.05.14 |
JDBC 연결시 에러 발생하는 경우. (0) | 2009.05.12 |
JDBC 정의 및 내용 정리 (0) | 2009.05.11 |
제네릭 프로그래밍(Generic Programming) (1) | 2009.05.11 |