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!

Tags:

Java

Debugging