It's ruined my Java, too. I recently discovered java.lang.reflect.Proxy
(as used by the wonderful EasyMock framework), and I've since had to
suppress the urge to make everything an interface with so implementation
just so that I can make a Proxy out of it and call methods dynamically.
It's no Ruby (or Smalltalk), but it's something.