Обобщения позволяют типам быть параметрами
Обобщения позволяют типам (классам и интерфейсам) быть параметрами при определении классов, интерфейсов и методов.
Это похоже на знакомые формальные параметры, используемые в объявлениях методов. Разница заключается в том, что входные данные для формальных параметров являются значениями, в то время как входные данные для типов параметров являются типами.
Пример ниже: -
Использование формального параметризованного метода и обобщений: -
class Room {
private Object object;
public void add(Object object) {
this.object = object;
}
public Object get() {
return object;
}
}
public class Main {
public static void main(String[] args) {
Room room = new Room();
room.add(60);
//room.add("60"); //this will cause a run-time error
Integer i = (Integer)room.get();
System.out.println(i);
}
}
Родовая версия выше: -
class Room<T> {
private T t;
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
}
public class Main {
public static void main(String[] args) {
Room<Integer> room = new Room<Integer>();
room.add(60);
Integer i = room.get();
System.out.println(i);
}
}
В генетической версии класса, если кто-то добавит room.add("60")
, будет показана ошибка времени компиляции.
1.Инфо источника
2. Пример взят из