Java has no concept of making a particular instance of a class "unmodifiable." If you use an instance of a modifiable (usually we say "mutable") class as a member of an interface, then it's going to be possible to modify that object.
Note that in your example, you didn't show something like
BUF = new StringBuffer("replacement");
If you tried this, you'd find that because BUF is final, this is illegal. The object that BUF points to can be modified, but BUF, being final, can not.