0
我只想澄清一些與Javassist有關的事情。Javassist澄清(導入和插入)
1. ClassPool.importPackage方法是否爲該類物理地添加行號?例如,如果這是我的代碼:
public class Test {
public static void main(String[] args){
System.out.println("Message!");// Line 3
}
}
而我要導入「java.util。*;」包,該打印語句現在是否在第4行?
2.有沒有辦法在方法行號而不是類行號處添加代碼? CtMethod.insertAt()需要一個類行號。
如果有人對此有所瞭解,我會非常感謝澄清,因爲文檔非常模糊,似乎沒有人看到需要提出這個問題。
對不起,如果這聽起來很愚蠢,但我可以有一個迭代方法指令並找到第一個行號的例子嗎? – CoalCoding
從'CtMethod',你可以得到它的'MethodInfo'實例。它甚至定義了一個便於使用的方法'getLineNumber',它可以滿足您的需求:https://jboss-javassist.github.io/javassist/html/javassist/bytecode/MethodInfo.html#getLineNumber-int-請注意,它可能會返回' - 1「,如果在insertAt方法不起作用的地方沒有定義該值。 –