Skip to content
Dima Kruk edited this page Feb 7, 2013 · 3 revisions

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, это языковое расширение не поддерживает статические обобщённые типы.

Clone this wiki locally