Since you haven't over ridden the equals method in Value, the call is delegated to the super class (in this case Object)
From the API docs for Object#equals()
The equals method for class Object implements the most discriminating possible equivalence relation
on objects; that is, for any non-null reference values x and y, this method returns true if and only if x
and y refer to the same object (x == y has the value true).
Since v1 and v2 do not refer to the same object, it evaluates to false
To see this in action, try the following code.