Параметри на типа в Java Generics
По конвенция имената на параметрите на типа са с единични главни букви. Параметрите на генериците се именуват както следва:
E - Елемент (използван широко от Java Collections Framework)
K - Ключ
N - Число
T - Тип
V - Стойност
S,U,V и т.н. - 2-ри, 3-ти, 4-ти тип
Raw тип се нарича генеричен клас или интерфейс, при употребата на който не са приложени параметри за тип. Като пример можем да разгледаме генерик класа Box:
За да бъде създаден параметризиран тип Box, е необходимо като аргумент на формалния параметър T да се добави използвания за казуса тип:
Но ако аргументът, задаващ използвания тип, се пропусне, се създава raw тип на Box:
Следователно Box е raw тип на генеричния тип Box<T>. Трябва да се има предвид обаче, че обикновените класове и интерфейси не са raw тип.
Raw типове се откриват в наследен (legacy) код, тъй като много API класове (като класовете на колекциите ) не са били генерици преди JDK 5.0. Когато използвате raw типове, вие по същество получавате негенерично поведение - Box ви дава Object s. За обратна съвместимост е разрешено присвояването на параметризиран тип към неговия raw тип:
Но ако присвоите необработен тип на параметризиран тип, получавате предупреждение:
Предупреждението показва, че необработените типове заобикалят общите проверки за типове, като отлагат улавянето на опасен код за времето за изпълнение. Следователно трябва да избягвате използването на сурови видове.
Last updated
Was this helpful?