This is similar to generic classes, you define a parameter T on the interface level, and your methods can use this parameter in their prototype, so any class that will be implementing this interface will naturally implement the parameter T within its own methods. You can also add constraints to generic interfaces. Note that the class which will be implementing the generic interface must define the parameter T.
To test the above implementation, we will be creating an object from Book with parameter String, and then we will use the add method to add the string value to the Book class.
The example below will illustrate the use of a generic interface: