Каков синтаксис инструкции вставки IFEQ и RETURN в BCEL?

Учитывая следующий метод:

public static boolean check(String name){
    return true;        
}

Я хочу добавить инструкцию, если returns true только если имя равно bcel, т.е.

public static boolean check(String name){
   if(name.equals("bcel")) 
      return true;  

      return false;         
}

Я знаю, что я должен использовать IFEQ, IRETURN а также ICONST_0... но я не знаю точный синтаксис.

Вот часть метода, который я пытаюсь завершить:

for (h=il.getStart(); h!=il.getEnd();h=h.getNext()) // il: InstructionList,  h: InstructionHandle
{
    Instruction inst = h.getInstruction();              
    il.insert(h,InstructionFactory.ICONST_0);
    il.insert(h,InstructionFactory.IRETURN);
    ..
    ..
    try{
        h=h.getNext();
    } 
    catch(Exception e){}}

Помогите, пожалуйста.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Байт-код первого кода:

iconst_1
ireturn

Байт-код второго кода:

aload_0
ldc #2<bcel>
invokevirtual #3<java/lang/Sting/equals(<java/lang/object;)z>
ifeq 11 (+5)
iconst_1
ireturn
iconst_0
ireturn

0 ответов

Другие вопросы по тегам