Прежде всего, это довольно стандартно для языков.Даже в C ++:
template <class myType>
myType GetMax (myType a, myType b) {
return (a>b?a:b);
}
Вы объявляете параметр типа над обобщенной функцией.
Когда он является функцией-членом класса, он имеет доступ к параметрам типа класса.Когда он статичен, это не так, поэтому вам нужно объявить их явно.