How we can implement and use type classes in Java programming language and what are the benefits of this functional concept (or pattern) and also the difficulties in implementing it using Java