Sometimes I'm just amazed at how many bad ideas some people can slam together at once. Have a look here, for instance, at the ContractualJ site - where they say they are trying to follow DBC principles in Java. The list of bad ideas:
- All classes are declared final. Concrete behaviour inheritance is not permitted. Yeah, because library designers are always perfect, and they always *cough* think of every possible end use *cough*
- All local variables and fields are declared final, unless otherwise required not to be by the context. A local variable or field that is assigned once must be declared final. See above. Truly, library designers are gods.
Some of the others might well be bad ideas, but I'm not really expert enough with Java to say with conviction. The two things above though? Just horrible. Run, don't walk, from this set of ideas.