For (2) you use asserts which can be turned off once you are sure the code is solid.
For (3) you trust the run time array subscript out of bounds and null pointer checking.
| Design by Contract | Alternative |
| Enabling | Learning More |
| Coding | Links |
Bertrand Meyer in Eiffel pioneered the use of structured assertions in a system he called Programming By Contract. These serve both to document the preconditions (require) on parameters coming into a method, and the guaranteed characteristics of the result (ensure). Unfortunately, Java still does not support them. They can be crudely added with the JaWa preprocessor.
Java 1.4.1+ has a feature Sun calls assertions but they are so pathetic they don’t deserve the name. It is as though Sun wanted to claim that Java has assertions without doing any work to implement them and not caring if the final product was actually of any use. If Sun wants to try again, they should look at how Eiffel assertions work.
They are new language feature, not just a new class.
In Eclipse, you enable assertions by using the JDK 1.5 level then click run ⇒ arguments ⇒ VM arguments then enter -ea. There is no checkbox to tick.
assert a > b : "a must be bigger than b";The second expression can be anything you would feed to printLn or it can be left out.
To mark a place in your code you should never get, you can code an assertion that always fails like this:
assert false : "Fell out bottom of loop without finding elt.";
| You can get the freshest copy of this page from: | or possibly from your local J: drive (Java virtual drive/mindprod.com website mirror) | |
| http://mindprod.com/jgloss/assertions.html | J:\mindprod\jgloss\assertions.html | |
![]() | ||
| Canadian Mind Products | ||
| mindprod.com IP:[65.110.21.43] | ||
| view Blog | Your face IP:[38.107.191.100] | |
| Feedback | You are visitor number 14,403. | |