Notice
Recent Posts
Link
Tags
- PYTHON
- Django
- AWS
- string
- join
- 문자열
- 스프링부트
- 프로그래머스
- DI
- spring security 6
- session
- jpa
- ORM
- springboot
- @transactional
- nginx
- 자바
- Docker
- mysql
- java
- 스프링
- sql
- spring boot
- spring
- 1차원 배열
- Git
- spring mvc
- 데이터베이스
- select
- SSL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Archives
개발하는 자몽
Class 클래스, forName(), Reflection 프로그래밍 본문
Class 클래스
Java의 모든 클래스, 인터페이스는 컴파일 후 .class 파일로 생성된다. 이 파일에는 멤버 변수, 메서드, 생성자 등의 객체의 정보가 담겨있다. Class 클래스는 컴파일된 class 파일에서 객체의 정보를 가져올 수 있다.
forName()
Class의 static 메소드인 forName은 클래스의 이름을 매개변수로 받아서 Class 객체를 리턴해준다. 이 메서드는 해당 statement가 수행될 때 매개변수로 받은 클래스를 메모리에 적재(load)한다. 이를 동적로딩이라 하며 상황에 따라 라이브러리나 클래스를 로드할 수 있어서 메모리를 아낄 수 있다.
| Note - 동적 로딩(dynamic static) : 컴파일 시 데이터 타입이 모두 binding되어 자료형이 로딩되는 것(static loading)이 아닌 실행 중에 데이터 타입을 알고 binding되는 방식
Class c = Class.forName("java.lang.String");
동적로딩 관련 글
Reflection 프로그래밍
Reflection 프로그래밍은 Class 클래스로부터 객체의 정보를 가져와 프로그래밍하는 방식으로 java.lang.reflect 패키지에 있는 클래스를 활용한다.
Class c = Class.forName("java.lang.String");
Constructor[] cons = c.getConstructors();
Fields[] f = c.getFields();
Methods[] m = c.getMethods();
위 코드와 같이 사용하여 어떤 자바 클래스가 가진 모든 멤버의 이름을 얻거나 보여줄 수 있다.
참고
'Java' 카테고리의 다른 글
람다식, 스트림(Lambda, Stream) (0) | 2022.07.26 |
---|---|
내부 클래스 (Inner Class) (0) | 2022.07.25 |
Wrapper 클래스 (0) | 2022.07.19 |
[객체 지향] is-a, has-a (0) | 2022.07.16 |
static, singleton pattern (0) | 2022.07.15 |
Comments