[ASM] 클래스 - 구조
Good Tools : 2010.03.31 17:32
참조: http://download.fr.forge.objectweb.org/asm/asm-guide.pdf
컴파일 된 클래스 구성요소
- 클래스의 접근자, 이름, 상위 클래스, 인터페이스, 애노테이션
- 클래스에 선언한 필드당 한 섹션. 각 섹션에는 필드의 접근자, 이름, 타입, 애노테이션
- 클래스의 메서드와 생성자 당 한 섹션. 각 섹션에는 접근자, 이름, 반환 타입, 매개변수 타입, 애노테이션, 컴파일된(바이트) 코드
소스와 컴파일된 클래스와 차이
- 컴파일된 클래스는 오직 한 클래스에 대한 정보만 나타내지만 소스는 여러 클래스 가질 수 있다.
- 컴파일된 클래스는 주석을 가지고 있지 않다. 하지만 애노테이션에 부가 정보를 담을 수 있다. 그 전에는 클래스, 메서드, 필드, 코드의 attibutes 속성에 부가 정보를 전달했지만 이젠 별로 쓸 일 없다.
- 컴파일된 클래스는 package나 import 섹션이 없다. 모든 타입 이름이 전체 경로를 가지고 있다.
- 컴파일된 클래스는 constatnt pool 섹션을 가지고 있다.
internal name
- 클래스 또는 인터페이스 타입의 이름
- String -> java/lang/String
Type descriptor
- 자바 타입 서술자
boolean-> Z
char-> C
byte-> B
short-> S
int-> I
float-> F
long-> J
double-> D
Object-> Ljava/lang/Object;
int[]-> [I
Object[][]-> [[Ljava/lang/Object;
Method descriptor
- 메서드 서술자
void m(int I, float F) -> (IF)V
int m(Object o) -> (Ljava/lang/Object;)I
int[] m(int i, String s) -> (ILjava/lang/String;)[I
Object m(int[] i) -> ([I)Ljava/lang/Object;
컴파일 된 클래스 구성요소
- 클래스의 접근자, 이름, 상위 클래스, 인터페이스, 애노테이션
- 클래스에 선언한 필드당 한 섹션. 각 섹션에는 필드의 접근자, 이름, 타입, 애노테이션
- 클래스의 메서드와 생성자 당 한 섹션. 각 섹션에는 접근자, 이름, 반환 타입, 매개변수 타입, 애노테이션, 컴파일된(바이트) 코드
소스와 컴파일된 클래스와 차이
- 컴파일된 클래스는 오직 한 클래스에 대한 정보만 나타내지만 소스는 여러 클래스 가질 수 있다.
- 컴파일된 클래스는 주석을 가지고 있지 않다. 하지만 애노테이션에 부가 정보를 담을 수 있다. 그 전에는 클래스, 메서드, 필드, 코드의 attibutes 속성에 부가 정보를 전달했지만 이젠 별로 쓸 일 없다.
- 컴파일된 클래스는 package나 import 섹션이 없다. 모든 타입 이름이 전체 경로를 가지고 있다.
- 컴파일된 클래스는 constatnt pool 섹션을 가지고 있다.
internal name
- 클래스 또는 인터페이스 타입의 이름
- String -> java/lang/String
Type descriptor
- 자바 타입 서술자
boolean-> Z
char-> C
byte-> B
short-> S
int-> I
float-> F
long-> J
double-> D
Object-> Ljava/lang/Object;
int[]-> [I
Object[][]-> [[Ljava/lang/Object;
Method descriptor
- 메서드 서술자
void m(int I, float F) -> (IF)V
int m(Object o) -> (Ljava/lang/Object;)I
int[] m(int i, String s) -> (ILjava/lang/String;)[I
Object m(int[] i) -> ([I)Ljava/lang/Object;
'Good Tools' 카테고리의 다른 글
[ASM] 개요 (0) | 2010.04.13 |
---|---|
[ROME] RSS, ATOM 등 피드 다루기 (0) | 2010.04.01 |
[ASM] 클래스 - 파싱하기 (0) | 2010.04.01 |
[ASM] 클래스 - 인터페이스와 구성요소 (0) | 2010.04.01 |
[아이튠즈] 아이폰이나 터치보다 중요한거~ (0) | 2010.04.01 |
[ASM] 클래스 - 구조 (0) | 2010.03.31 |
[구글 크롬] 스프링 소스 한글 사이트 (0) | 2010.03.24 |
[톰캣] 톰켓 7의 메모리 누수 방지 (0) | 2010.03.15 |
[MySQL Administrator] Row 갯수 제대로 못세나? (2) | 2010.03.03 |
파이어폭스에서 크롬으로 갈아타기 (4) | 2010.02.12 |
[인텔리J IDEA] 스프링 XML 설정 지원 기능 (0) | 2009.12.28 |
TAG ASM