에 두 그래서자바 바이트 코드는 : 내가 시험 방법이에 대한 루프 onmethodExit
public List<User> getUsers(){
List list = new ArrayList();
return list;
}
, 나는 이전과 이후 새로운 목록, 방법에 두 루프 코드를 삽입하려면, ASM 코드를 동일입니다 : 대한 루프
final int returnValueStackNum = adapter.newLocal(Type.INT_TYPE);
mv.visitInsn(Opcodes.ICONST_0);
mv.visitVarInsn(Opcodes.ISTORE, returnValueStackNum);
final Label l0 = new Label();
mv.visitJumpInsn(Opcodes.GOTO, l0);
final Label l1 = new Label();
mv.visitLabel(l1);
mv.visitIincInsn(returnValueStackNum, 1);
mv.visitLabel(l0);
mv.visitVarInsn(Opcodes.ILOAD, returnValueStackNum);
mv.visitIntInsn(Opcodes.BIPUSH, 10);
mv.visitJumpInsn(Opcodes.IF_ICMPLT, l1);
첫 번째는 바로 새로운 클래스 파일에 있지만 초 동안 루프 같은 코드, 잘못하고 복귀 손실 :
List list = new ArrayList();
for (int i = 0; i < 10; i++);
int j = 0;
tmpTernaryOp = localArrayList;
while (j < 10)
j++;
있다 문제는, 대단히 감사합니다.
for (int i = 0; i <10; i ++); 이것의 사용은 무엇입니까? (결국 세미 콜론에 주목하십시오)? .. 같은 줄에서 끝났습니다. –
예, for (int i = 0; i <10; i ++); 코드가없고 비어있는 for 루프이며 두 개의 for 루프는 같지만 두 번째 비어있는 경우 오류가 발생합니다. returnValue는 이상한 변수에 할당됩니다. 참고 : onmethodExit 메소드의 ASM 코드 – user1212990