Is there asm nop equivalent in java?
In bytecode you have a nop
instruction, but there's no nop
statement in the Java language.
You can add an extra ;
on a line by itself and the code will still compile, but that's not much more meaningful than adding an empty line.
Another "does nothing" statement could be:
assert true;
which has no side-effects what so ever, and can be turned off when executing the program.
As it turns out, assert true
does not seem to generate any bytecode instructions, which causes break-points on assert true to be skipped all together. Eclipse is however able to break on a statement such as
assert Boolean.TRUE;
which is quite similar.
You can just put in any arbitrary assignment statement that doesn't do anything, e.g.
if (someCondition()) {
int t=0;
}
The debugger will be happy to break on this. Since t
is local to the block, it can't possibly have any side effects (and will get JIT-compiled out of existence in production code).
Alternatively, you can write a static function which has a breakpoint permanently set inside it, so you can just do:
if (someCondition()) {
breakPoint();
}
Java interprets this as an empty statement:
;
Though, as noted in comments, Eclipse won't let you set a breakpoint here. If you want something useless that you can put a breakpoint on that's also nice and easy to type, I suggest:
if(false){}
Your compiler might warn you that this is never entered, which can be useful for reminding you to take it out before compiling for production. Hope this helps!