1. bar's visibility is package local, so your code is already broken, bar is invisible outside its package
2. let's say you solve this conundrum by making the field public
2.1. This piece of code is now frozen solid, you will not be able to ever refactor it (where refactoring is defined as changing implementation without changing behavior) since you can not transparently swap fields and methods in Java
2.2. This piece of code is dead to abstract types, as fields can not be part of interfaces in Java.
2.3. This piece of code is incompatible with Java Beans and will therefore be unusable in e.g. JSP taglibs