Java does not support Design-by-Contract (pre- and post-conditions, invariants) and asserts are really just a weak placebo.
Nevertheless, you can at least indicate your intentions to some degree with labels:
public void foo(Bar theX, ...) {pre_condition: { vetoArgument( null==theX, "Bar argument is null" ); }// some codepost_condition: { ... }}
where vetoArgument is some helper method to throw an IllegalArgumentException or the like.
Labels are a somewhat under-used feature of Java. But it’s still not the full DBC feature I’d like to see. Annotations will not be able to substitute for proper built-in language support. How long do we still have to wait?
