이 글의 개념 및 코드들은 책을 읽으며 정리한 내용을 바탕으로 작성하였습니다.
클래스 생성자 접근
-
이번 글에서는
-
클래스에 생성자에 접근하는 방법에 대해 알아본다.
생성자 접근
-
클래스를 접근하기 위해서
-
해당 클래스의 생성자를 호출한다.
-
생성자의 Parameter가 있는 경우
-
생성자의 Parameter가 없는 경우
Book.class
- 2가지 생성자를 갖는 Book 클래스를 생성한다.
public class Book {
private String b;
public Book() {
}
public Book(String b) {
b = b;
}
}
Access constructor with parameters
- String 값을 받는 생성자에 접근해보자.
public Book(String b) {
...
}
public static void clazz() throws ClassNotFoundException,
NoSuchMethodException, IllegalAccessException,
InvocationTargetException, InstantiationException {
Class<?> bookClass = Class.forName("goodgid.gidhub.Book"); // Step 1
Constructor<?> constructors = bookClass.getConstructor(String.class); // Step 2
Book book = (Book) constructors.newInstance("B"); // Step 3
Step 1.
- Book 클래스에 접근한다.
Step 2.
-
Book 클래스에는 2가지 생성자가 있고
-
우리가 원하는 생성자의 Sginature는
-
String Type을 Parameter로 받는 생성자이기 때문에
-
.getConstructor()의 Paramter 값으로 String.class를 넘겨준다.
bookClass.getConstructor(String.class);
Step 3
-
Step 1~2를 통해 원하는 생성자에 접근하였다.
-
이제 해당 생성자를 이용하여 Instatnce를 생성한다.
constructors.newInstance();
-
이 경우 생성자는 String 값을 필요로 하기 때문에
-
적절한 String 값을 넘겨준다.
constructors.newInstance("B");
Access constructor without parameters
public static void clazz() throws ClassNotFoundException,
NoSuchMethodException, IllegalAccessException,
InvocationTargetException, InstantiationException {
Class<?> bookClass = Class.forName("goodgid.gidhub.Book"); // Step 1
Constructor<?> constructors = bookClass.getConstructor(null); // Step 2
Book book = (Book) constructors.newInstance(); // Step 3
Step 1.
- Book 클래스에 접근한다.
Step 2.
-
Book 클래스에는 2가지 생성자가 있고
-
우리가 원하는 생성자의 Signature는
-
어떤 값도 필요로 하지 않기 때문에
-
.getConstructor()의 Paramter 값으로 null을 넘겨준다.
bookClass.getConstructor(null);
Step 3
-
Step 1~2를 통해 원하는 생성자에 접근하였다.
-
이제 해당 생성자를 이용하여 Instatnce를 생성한다.
-
이 경우 생성자는 어떤한 값도 필요하지 않기 때문에
-
Parameter값은 필요없다.
constructors.newInstance();
Summary
- 클래스 생성자에 접근하는 방법에 대해 알아봤다.
- 이 글과 관련해서 다음 글들도 함께 보길 추천한다.