You should use generics anytime you will use a class or interface in situations that operate on different data types. When you do this, type safety is ensured, and it becomes much easier to work with them in different contexts.