개발하는 자몽

Class 클래스, forName(), Reflection 프로그래밍 본문

Java & Kotlin

Class 클래스, forName(), Reflection 프로그래밍

jaamong 2022. 7. 20. 09:58

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
Comments