Hi Peter
The only reason that a constructor can set the value of a final variable is that is has has not been assigned a value upon declaration. Hence if, as like in the
test answer, the reference is given null then the constructor would not be able to reassign it
eg
Hence the constructor cannot set it if its already set at declaration.
So what im saying is that
is OK only because buf is actually blank (NOT NULL) after declaration, where as the test answer indicates it is actually initialized to null
The same is true of final primitives
Tom