개발하는 자몽

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

Java

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' 카테고리의 다른 글

람다식, 스트림(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