Javassist와 관련된 몇 가지 사항에 대한 설명이 필요합니다.Javassist 설명 (수입 및 삽입)
ClassPool.importPackage 메서드는 실제로 클래스에 행 번호를 추가합니까? 예를 들어 이것이 내 코드 인 경우 :
public class Test {
public static void main(String[] args){
System.out.println("Message!");// Line 3
}
}
그리고 "java.util. *;" 패키지, 그 print 문은 이제 4 번 줄에 올까?
2. 클래스 행 번호가 아닌 메소드 행 번호에 코드를 추가하는 방법이 있습니까? CtMethod.insertAt()에는 클래스 행 번호가 필요합니다.
아무도이 문서에 대해 아무 것도 모르는 경우 문서가 매우 모호하고 다른 사람이이 질문을 할 필요가 있음을 알 수 없으므로 설명을 매우 감사하게 생각합니다.
미안하지만이 방법이 어리석은 생각이 들지만 메서드의 지침을 반복 실행하고 첫 번째 줄 번호를 찾는 예가있을 수 있습니까? – CoalCoding
'CtMethod'에서'MethodInfo' 인스턴스를 얻을 수 있습니다. 그것은 당신의 목적에 부합하는 편의 메소드'getLineNumber'를 정의합니다 : https://jboss-javassist.github.io/javassist/html/javassist/bytecode/MethodInfo.html#getLineNumber-int-'- 'insertAt' 접근법이 처음에는 작동하지 않는 곳에 값이 정의되어 있지 않으면 '1'을 반환합니다. –