However java does not seem to allow 2 returns in the same method
That's not correct.
and considers the following code as not having a return statement.
This is correct. Not all paths end in a return statement, so your compiler is complaining. You have a return for the if clause, one for the else if clause, but no return for the implicit else clause. It doesn't matter that the implicit else clause is logically impossible, your compiler isn't checking the conditions, only the paths.
In this case you can turn the else if into a simple else to fix the problem, because that wouldn't break your logic.