Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 기술이론
- DATAVIEW
- 개발
- ender v3 se
- 옵시디언 dataviewjs
- blender
- 3D모델링
- 프로그래머스
- 알고리즘
- dataviewjs
- 남자피부관리
- 피부관리
- 코드스니펫
- ender v3
- 웹기초
- It용어
- 네트워크 이론
- 옵시디언
- 개발이론
- Sketcher
- 개발기초
- 웹개발
- 네트워크
- 자바스크립트
- 나이아신아마이드
- 3d 프린터 기초
- ender
- 3D프린터
- 옵시디언 dataview
- 기술용어
Archives
- Today
- Total
루이의 개발 블로그
리플렉션 본문
구체적인 클래스 타입을 알지 못하더라도 그 클래스의 메서드, 타입, 변수들에 접근할수 있도록 해주는 자바 API
리플렉션은 언제 사용할까?
동적으로 클래스를 사용해야할 때 (or 어떤 클래스를 사용 해야할 지 모를 때)
소스코드 사용예시
부모, 자식, main 소스코드 파일을 만들어서 예시를 보여준다면.
우선 메서드 선언 들은 무시하고 같은 패키지 안에
parent, child, Test 메서드가 아래와 같이 정의 되어있다고 이해하자
- reflectiontest
- parent (부모)
- child (자식)
- Test (main)
- parent (부모)
- 클래스객체 타입으로 clazz 를 선언하여 Child.class 를 담아준다.
- 객체의 getName() 호출을 하면 test안에 있는 Child 의 클래스명 이 출력되는 것을 확인할 수 있다.
- Class.forName 를 사용하여 문자열 을 넣어서 클래스 정보를 가져올 수 있다.
- 핵심은 클래스를 문자열로 찾아낼 수 있다는 점이다.
클래스정보
package reflection
class Child{}
class Child2{}
class Child3{}
String[] classList = {"Test.Child", "Test.Child2", "Test.Child3"};
Class clazz2 = Class.forName(classList[0]));
System.out.println("Class name: " + clazz2.getName()); //출력 Class name: test.Child
- 이처럼 클래스를 String 변수, 배열 을 통해 접근 하는게 가능 하다는 것이다.
이로서 동적으로 클래스를 선택하여 사용 할 수 있게 된다.
'기술용어' 카테고리의 다른 글
동기처리와 비동기처리 (0) | 2023.09.29 |
---|---|
버퍼블로트(Bufferbloat) (0) | 2023.09.29 |
클래스 객체 (0) | 2023.09.23 |
데이터 마이그레이션 (0) | 2023.09.23 |
레이턴시 (0) | 2023.09.16 |