NOTE: This article is 3 years or older so its information may no longer be relevant. Read on at your own discretion! Comments for this article have automatically been locked, refer to the FAQ
for more details.
I've been doing some tricky debugging recently where I had to provide one of my web services that required the environment it ran in configured a very particular way. The developer I was working with did not have such an environment and there was no time to set one up properly. This was a bit of a dilemma, however the issue we were trying to debug didn't require my service to fully execute, it was sufficient to get to a particular point in the execution and exit, this could be done on a vanilla system.
The naive solution is to put in an early return statement in the code. However, the Java compiler detects this and you get a compiler unreachable statement error. There is a way around this though!
Lets look at some code to illustrate this.
This code doesn't do anything useful, but for example purposes lets say we needed to return early from the method before the 'int k = i + j;'
line was executed. We could try inserting a return statement like this...
Of course this would get a compile error...
Test.java:9: error: unreachable statement
int k = i + j;
So how do we trick the compiler in letting us return early? It's as simple as adding an invariant true condition to the return statement thus:
The condition inside the if statement will always evaluate to true (unless you're doing quantum computing maybe) so we will always execute the return statement and the compiler will not complain.
This is a trick and abuse of the language so it should not be used in normal programming situations, but under certain conditions this can make an invaluable debugging tool.
A quick disclaimer...
Although I put in a great effort into researching all the topics I cover, mistakes can happen.
If you spot something out of place, please do let me know.
All content and opinions expressed on this Blog are my own and do not represent the opinions of my employer (Oracle).
Use of any information contained in this blog post/article is subject to this disclaimer
Other posts you may like...