Utility class in Java

A Utility class is just a place holder of related functions and is not meant to be instantiated or subclassed.

A Utility class has the functions which is independent of object instances. Those functions are kind of aggregate functions. They only depend on parameters for return values. They are not associated with class variables of utility class.

So most Utility classes functions are kept static. As a result, Utility classes are ideally classes with all the static methods. So calling these methods don't need to instantiate this class.

So it's better a Utility class should be final with static methods and private constructor. This is not necessary, but it is convenient.

So preventing instantiation and extension sends a correct message to the users using the Utility class.