Вы можете посмотреть на существующий API для руководства. Например, все коллекции являются общими. Это потому, что все коллекции содержат элементы типа.
Исходя из этого, имеет смысл использовать универсальные классы, когда вам придется снова и снова создавать один и тот же код для разных типов. Если вам нужно сделать это, дженерики могут предложить вам некоторую выгоду.
В качестве примера, документы - хорошее место для начала .
По этой ссылке первый пример кода:
public class Box<T> {
// T stands for "Type"
private T t;
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
}
Концептуально, есть класс Box, который будет содержать что-то. То, что оно содержит, не имеет значения, потому что тип определяется программистом. Экземпляр Box может содержать в основном все, что угодно. Когда программисту нужно создать поле, он / она указывает тип.
Box<SomeClass> myBox = new Box<SomeClass>();
Подумайте об этом так: если вы хотите создать общий ящик, который может содержать что угодно без генериков, вам придется
1) иметь поле f
быть Object
или
2) создать класс Box для каждого типа, который может содержать box.
При использовании дженериков вам нужен только один класс, и вы можете указать точный тип. Возможно, если вы что-то делаете, и ваш подход подразумевает 1 или 2 выше, лучше использовать дженерики.