java

[java] 클래스명, 필드명 가져오기

JH..Y 2021. 10. 25. 14:16
728x90
@Data
public class Action(){
    private String action1;
    private String action2;
}

public class ClassName(){

    public void test(){
    	Action action = new Action();
        action.setAction2("액션2값넣기");
        String className = action.getClass().getSimpleName().toUpperCase();
        // className 출력 => ACTION

	String fieldName = "";

        // Action 이라는 클래스안에 사용하고 있는 필드명 가져오기
        for(Field field : action.getClass().getDeclaredFields()){
            // private 멤버변수 값을 read/write 하기 위해선 setAccessible 메소드를 통해 해당 필드 값에 접근을 허용이 필요
            // private 멤버변수인데 setAccessible를 사용안하고 접근하면 IllegalAccessException 예외발생 
            field.setAccessible(true); // private 멤버변수 접근가능하게해줌
            // 필드명
            String name = field.getName();
            //필드내부값
            Object value = filed.get(action)
            
            if(!ObjectUtils.isEmpty(value)){
            	fieldName = name;
            }
        }
        // fieldName 출력 => action2
    }
}
728x90