210202

[Java] 클래스의 생성자 파라미터 개수를 받아오는 방법 본문

Android

[Java] 클래스의 생성자 파라미터 개수를 받아오는 방법

dev210202 2021. 1. 26. 12:09

앱 개발을 하면서 기존에 model에 있는 파라미터 개수를 리턴할때는 다음과 같이 itemSize메소드를 사용했다.

ex) itemSize로 파라미터 개수를 리턴하는 방식

public class User {
    String state;
    String generation;
    String name;
    String department;

    public User(String state, String generation, String name, String department) {
        this.state = state;
        this.generation = generation;
        this.name = name;
        this.department = department;
    }

    public int itemSize() {
       return 4;
    }

}

이 방식은 파라미터를 추가하거나 삭제할때 수작업으로 itemSize의 값을 수정해야해서 굉장히 불편하고 안좋은 방법이였다.

그래서 파라미터의 개수가 바뀌어도 알아서 itemSize가 변경되게 하는 방법을 찾아서 구현해봤다.

 

 public int itemSize() {
        Class userClass = User.class;
        Constructor[] constructors = userClass.getDeclaredConstructors();
        int parametersSize = 0;
        for (Constructor constructor : constructors) {
            parametersSize = constructor.getParameterCount();
        }
        return parametersSize;
}

 

User 클래스 객체를 만들어서 User클래스에 있는 모든 생성자들을 가져오는 getDeclaredConstructors 메소드를 사용한다.

Q. 여기서 의문점. 왜 모든 생성자들을 가져오는 메소드를 사용할까? getDeclaredConstructor로 생성자 하나만 가져와서 바로 리턴하면 될 것 같은데?
A. getDeclaredConstructor 메소드는 파라미터를 가지기때문에 생성자의 파라미터가 변경되면 getDeclaredConstructor의 파라미터도 변경시켜줘야해서 처음 생각한 의도와 달라 사용하지 않았다. 

 

다시 본론으로 돌아와서, getDeclaredConstructors로 받은 생성자들을 반복문을 통해서 마지막 생성자의 파라미터 개수를 리턴해주게 된다. 내가 사용하는 model들의 생성자는 모두 1개기 때문에 마지막 생성자의 개수가 내가 원하는 생성자의 파라미터 개수가 되기때문에 알맞은 값이 나온다.

User 클래스의 파라미터 개수인 4가 최종값으로 출력된다.

 

Comments