본문 바로가기

패스트캠퍼스 환급 챌린지

[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {20} 회차 미션

1. Class

Class 클래스

  • 자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일로 생성됩니다. class파일에는 멤버변수, 메서드, 생성자 등 객체의 정보가 포함되어 있는데 Class 클래스는 이 class파일에서 객체에 정보를 가져올 수 있습니다.
public static void main(String[] args) throws ClassNotFoundException {
		
		Class c1 = String.class;
		
		String str = new String();
		Class c2 = str.getClass();
		
		Class c3 = Class.forName("java.lang.String");
		
		Constructor[] cons = c3.getConstructors();
		for(Constructor con: cons) {
			System.out.println(con);
		}
		System.out.println();
		
		Method[] methods = c3.getMethods();
		for(Method method : methods) {
			System.out.println(method);
		}
		
	}
  • Class 클래스는 위와 같은 방법으로 불러올 수 있고 그중에 forName을 통해 가져오는 방법이 많이 사용되고 이를 동적 로딩이라고 부릅니다.

  • 동적 로딩이라고 부르는 이유는 보통 다른 클래스 파일을 불러올때는 컴파일 시 스태틱에 그 클래스파일이 같이 바인딩이 되지만 forName으로 class파일을 불러올 때는 컴파일에 바인딩이 되지않고 런타임때 불러오게 되기 때문입니다.

  • 즉 실행시에 불러서 사용할 수 있기 때문에 동적 로딩이라고 부르게됩니다.

  • 단점은 클래스파일명을 직접 적게 되어 있어 만약 파일명에 오타가 나면 에러가 발생할 수 있기 때문에 주의해야합니다.

  • Constructor와 Method를 모를 때 위와 같은 방식으로 모든 Constructor와 Method를 출력시킬 수 있습니다.

  • 하지만 보통 .을 누루면 어떤 것들이 가능한지 알 수 있기 때문에 사용할 일은 많이 없습니다.

출처: velog.io/@foeverna/Java-%EC%9E%90%EB%B0%94-%EA%B8%B0%EB%B3%B8-%ED%81%B4%EB%9E%98%EC%8A%A4-Class-%ED%81%B4%EB%9E%98%EC%8A%A4

 

[Java] 자바 기본 클래스 - Class 클래스

자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일로 생성됩니다. class파일에는 멤버변수, 메서드, 생성자 등 객체의 정보가 포함되어 있는데 Class 클래스는 이 class파일에서 객체에 정보를

velog.io

2. reflection 프로그래밍

Java Reflection 의 사용

 

By Glen McCluskey
January 1998

 

reflection 은 자바의 특징이다. 실행중인 자바프로그램 내부를 검사하고 내부의 속성을 수정할 수 있도록 한다. 예를 들어, 어떤 자바클래스가 가진 모든 멤버의 이름을 얻거나 보여줄 수 있다.
자바에서 클래스가 그 자신을 조사하고 수정하는 것이  많다고 할수는 없으나 다른 언어에서는 볼수 없는 특징이다.

reflection 이 구체적인 쓰임중에 하나가 빌더툴을 이용해서 소프트웨어 콤포넌트를 만드는 곳에서 이다. 툴은 reflection 을 사용해서 동적으로 로딩되는 자바 콤포넌트(클래스)의 속성을 얻을 수 있다.

출처: https://gyrfalcon.tistory.com/entry/Java-Reflection

 

Java Reflection 개념 및 사용법

Java Reflection 정의 리플렉션이란 객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법을 말한다. 투영, 반사 라는 사전적인 의미를 지니고 있다. 스프링을 공부하다가 보면 BeanFactory 라는 Spri

gyrfalcon.tistory.com

 

3. forName() 메서드와 동적 로딩

Class 클래스 static 메서드

동적 로딩이란? 컴파일 시에 테이터 타입이 모두 biding 되어 자료형이 로딩되는 것

(static loding) 이 아니라 실행 중에 데이터 타입을 알고 binding 되는 방식

실행 시에 로딩되므로 경우에 따라 다른 클래스가 사용될 수 있어 유용함

컴파일 타임에 체크 할 수 없으므로 해당 문자열에 대한 클래스가 없는 경우 예외

(ClassNotFoundException)이 발생할 수 있음

 

 

 

 

 

 

 

 

올인원 패키지 : JAVA 웹 개발 마스터👉https://bit.ly/35aoeAW