我在WebApplication中尝试了一些字节码操作,到目前为止,非常好。
现在我需要在代码中的某些特定位置注入一些字节代码。我使用switch
语句和method.inserAt();
尝试了此操作,
但它不会显示我想要的结果。
这是我的操作代码
private void changeMethod(CtMethod method) throws NotFoundException, CannotCompileException {
if (method.hasAnnotation(Loggable.class)) {
int linenumber = 0;
int i = 0;
switch(i) {
case 0: linenumber = 50;
break;
case 1: linenumber = 71;
break;
case 2: linenumber = 91;
break;
}
method.insertAt(linenumber, "\n" +
" Thread thread1 = new Thread(new Runnable() {\n" +
" @Override\n" +
" public void run() {\n" +
"\n" +
"\n" +
" threadLogger.info(\"Testlog\");\n" +
"\n" +
" try {\n" +
" threadLogger.logCall(Webservice.this.getClass().getMethod(\"startThread1\"), \"Thread1\");\n" +
" } catch (Exception e) {\n" +
" e.printStackTrace();\n" +
" }\n" +
"\n" +
"\n" +
" }\n" +
" });\n" +
" thread1.start();");
i++;
}
}
答案 0 :(得分:1)
在这里意识到:
int i = 0;
switch(i) { ...
i
总是为零。也许你想用这个价值做点什么?