- PYTHON
- join
- spring
- spring boot
- spring security 6
- mysql
- hibernate
- string
- 스프링
- ORM
- 데이터베이스
- select
- @transactional
- spring mvc
- Docker
- AWS
- jpa
- DI
- 1차원 배열
- 스프링부트
- Django
- nginx
- 문자열
- springboot
- 자바
- static
- SSL
- sql
- 프로그래머스
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
개발하는 자몽
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");
동적로딩 관련 글
Java - 심화 : 동적 로딩
동적 로딩(Dynamic Loading)이란 JVM을 기반으로 하는 언어들의 공통적인 특징이다.
velog.io
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] Class 클래스, Reflection 프로그래밍, newInstance 메서드
1. Class 클래스 Java의 모든 클래스와 인터페이스는 컴파일 후 .class 파일로 생성된다. .class 파일에는 객체의 정보가(멤버변수, 메서드, 생성자 등) 담겨있다. Class 클래스는 컴파일된 class파일에서
ozofweird.tistory.com
[Java] JDBC에서 Class.forName과 클래스 로딩에 대해 알아보기
지난 포스팅에서 Java Reflection에 대해 다뤘습니다. JDBC를 사용할 때 쓰이는 Class.forName 역시 Java Reflection에서 제공하는 기능 중에 하나입니다. JDBC 를 사용하여 DB에 접근하기 위해서는 제일 먼저 드
limdevbasic.tistory.com
Java Reflection 개념 및 사용법
Java Reflection 정의 리플렉션이란 객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법을 말한다. 투영, 반사 라는 사전적인 의미를 지니고 있다. 스프링을 공부하다가 보면 BeanFactory 라는 Spri
gyrfalcon.tistory.com
'Java & Kotlin' 카테고리의 다른 글
람다식, 스트림(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 |