2013-10-28 2 views
12

저는 ASM을 사용하고있는 바이트 코드 분석 프로젝트를 진행하고 있습니다. 모든 것이 잘 진행되고 있으며, 구문 분석하고 클래스 및 메소드 정보를 성공적으로 가져올 수 있습니다.Java의 바이트 코드 분석

하지만 제네릭에 대한 바이트 코드 표현을 이해해야합니다.

다음
(ILjava/util/Collection<+TE;>;)Z 

내가 하나 하나를 분해하려고 노력하고 이해하고있다 : 여기가 정보를 인쇄 할 수 ClassVisitor에서 visitMethod를 사용 java.util.list의 한 예이며, 이것은 내가 메소드의 서명 중 하나 얻고 무엇인가 메소드의 인수 : 그것을 위해 INT

  • Ljava/util/Collection 스탠드에 대한

    • I 스탠드 형의 인수의 Collection

    그러나 나는 제네릭 유형 즉 <+TE> 등등에 갇혀 있습니다. 아무도 나를 안내 할 수 있습니까? 검색을 시도했지만 정보가 충분하지 않았습니다. 누구든지 바이트 코드 이름 목록을 가지고 있다면 나에게 이야기 해 주시겠습니까?

    Collection<? extends E> -> Ljava/util/Collection<+TE;> 
    

    asm user guide 섹션에서보세요 :

  • 답변

    12

    일반 extends+ 스탠드는 TE는 모양을 소스 코드에 따라서 형 VAR E

    이 있음을 의미하면서 4.1.1 Generics -> Metadata

    +0

    정말 고맙습니다. 이것은 충분해야합니다, 나는 그것을 앞으로 가져갈 것입니다. :) –