Code that uses generics has many benefits over non-generic code. Below are the main benefits
A Java compiler applies strong type checking to generic code and issues errors if the code violates type safety. Fixing compile-time errors is easier than fixing runtime errors, which can be difficult to find.
The following code snippet without generics requires casting:
List list = new ArrayList();
list.add("hello");
String s = (String) list.get(0);
When re-written to use generics, the code does not require casting:
List<String> list = new ArrayList<>();
list.add("hello");
String s = list.get(0); // no cast
By using generics, programmers can implement generic algorithms that work on collections of different types, can be customized, and are type safe and easier to read.