반응형
자바 인스턴스 멤버변수 값 가져오기
# 인스턴스의 멤버변수에 접근하는 방법으로 getFields()가 있는데
멤버변수가 private인 경우 IilegalAccessException 오류가 발생한다.
그런경우에 사용하는 메소드로 getDeclaredFields()가 있다.
getDeclaredFields()를 사용하면 public, private 변수 모두 접근 가능하다.
getDeclaredFields()로 private 변수를 사용하기 위해서는 setAccessible() 메소드를 true로 설정해준다.
import java.lang.reflect.Field;
@SuppressWarnings("unused")
class DataClass {
private String first;
private String second;
private String third;
private String fourth;
private String fifth;
private String sixth;
private String seventh;
public DataClass() {
first = "1";
second = "2";
third = "3";
fourth = "4";
fifth = "5";
sixth = "6";
seventh = "7";
}
}
public class testClass {
public static void main(String[] args) {
DataClass dc = new DataClass();
Class<?> cls = dc.getClass();
Field fields[] = cls.getDeclaredFields();
try{
for(int i = 0; i < fields.length; i++){
fields[i].setAccessible(true);
System.out.println(fields[i].getName() + ", " + fields[i].get(dc));
}
} catch (Exception e){
e.getMessage();
}
}
}
출력 결과는 아래와 같다.
first, 1
second, 2
third, 3
fourth, 4
fifth, 5
sixth, 6
seventh, 7
참고
# 멤버변수의 구성
[public/private/protected] [static/final] [String/int 등](변수타입) 변수명;
# 접근 제어자
* public
모든 클래스에서 접근이 가능하다.
* private
현재 객체 내에서만 접근이 가능하다.
* protected
같은 패키지내에서만 접근이 가능하다.
# static
객체를 생성하지 않고 바로 필드나 메소드에 접근하여 사용할 수 있다. 공용으로 사용하는 변수나 메소드에 사용한다.
# final
수정이 불가능한 값을 변경할 수 없는 변수에 사용한다.
반응형
'Backend > JAVA' 카테고리의 다른 글
[JAVA] 자바 request 정보 및 모바일 구분하기 (0) | 2023.04.07 |
---|---|
[JAVA] 자바 세션 값 가져오기 - RequestContextHolder session 사용 (0) | 2023.04.06 |
[JAVA] 자바 배열 예제 (0) | 2023.04.01 |
[JAVA] StringBuilder 사용 메소드 정리 (0) | 2023.03.28 |
[JAVA] 자바 Stream 사용 예제 (0) | 2023.03.25 |
댓글