Type classes have some advantages over Java style interfaces. One advantage is the ability to implement functions that do not need to take in an instance of the interface.
For example, (FromString v) takes in a String and returns v, and it doesn't have to take v as a parameter.