-
Notifications
You must be signed in to change notification settings - Fork 0
Generics (ru)
Generics - языковое расширение, которое добавляет поддержку обобщённых типов в ActionScript3.
Обобщённый тип - это тип, который может быть указан при создании экземпляра. К сожалению, в "чистом" ActionScript3 такое поведение поддерживается только с классом Vector. Языковое расширение Generics даёт возможность добавить такое поведение любому пользовательскому классу. Использование Generics нацелено на увеличение повторного использования кода, проверку типов и производительность.
##Объявление
Для использования Generics необходимо импортировать язык generics. После этого появится возможность указать обобщённые типы, перечислив их в угловых скобках после имени класса. Обобщённые типы должны быть указаны при создании экземпляра класса.
public class GenericsList<T, T2, T3> { // T, T2, T3 - обобщённые типы
...
} new GenericsList.<int, int, int>(); // указание реальных типовОбобщённые типы могут быть уточнены с помощью extends.
Если уточнить тип в предыдущем примере T extends Sprite, то контроль типов предупредит нас при несоответствии. Так как int не может быть подклассом Sprite.
public class GenericsList<T extends Sprite, T2, T3> {
...
}new GenericsList.<int, int, int>(); // error
new GenericsList.<Sprite, int, int>(); // valid code##Использование
Обобщённые типы могут использоваться при указании типов в любом месте обобщённого класса. Вы можете создать метод обобщённого класса, указав тип любого аргумента одним из обобщённых типов. Это активирует контроль типов и автозаполнение.
public class GenericsList<T, T2, T3> { // T, T2 и T3 могут использоваться как тип в любом месте класса
public function GenericsList() {
}
public function myMethod(t : T) : void { // T ипользуется как тип аргумента
}
}var myList : GenericsList.<int, int, int> = new GenericsList.<int, int, int>();
myList.myMethod(123); // valid code
myList.myMethod("blah-blah"); // система проверки типов сообщит об ошибке##Static Generics Type
В отличии от Java, это языковое расширение не поддерживает статические обобщённые типы.