I was replying to you who stated that value types can’t be boxed into objects and can’t have equals and hashCode methods. That doesn’t seems to be true.
Lots of things can be done without object header. Forced immutability of value classes also allows for many optimizations at the runtime.
Also according to the mentioned article value classes can support a limited inheritance:
Can a value class implement interfaces? Yes. Boxing may occur when we treat a value as an interface instance.
Can I refactor methods into and out of value types? Yes, if you use common interfaces with default methods.
Interfaces with default methods seems roughly as powerful as universal traits that are allowed as supertypes of value types in Scala right now. So in general we don’t need to strip Scala’s value classes of functionality (to gain full compatibility) as Java ones provides everything necessary for current state of value classes in Scala.
The ability to parametrize generic classes and methods with value classes is a different topic and of course it reduces the need of explicit specialization.