ベクトルの型としてオブジェクトまたは*を使用しても、一般的な機能(Javaのリストなど)は提供されません。目撃者:
public static function someGenericVectorUtil (value:Vector.<*>) :void {
// do stuff to/with the Vector
}
var someVector:Vector.<Number>;
someGenericVectorUtil(someVector); // compile-time implicit coercion error
したがって、おそらく、配列を受け入れるようにユーティリティメソッドを再定義します。しかし、ユーティリティに入るベクトルを配列に変換する簡単な方法も、後でそれらをパックする簡単な方法もありません。その結果、次のようなコードになります。
public static function someGenericArrayUtil (value:Array) :void {
// do stuff to/with the formerly-known-as-Vector
}
var someVector:Vector.<Number>;
var tempArray:Array = new Array(someVector.length);
for (var i:uint=0; i<someVector.length; i++) {
tempArray[i] = someVector[i];
}
someGenericVectorUtil(tempArray);
someVector = Vector.<Number>([tempArray]);
言うまでもなく、それはかなり恐ろしいことです。では、Vector-Array-Vectorナンセンスをユーティリティに移動しましょう。
public static function vectorToArray (Vector.<*>) :Array {
// oh wait....that Vector.<*> param is useless,
// as demonstrated earlier.
}
この混乱を正す方法はありますか?または、汎用ユーティリティを使用してベクターを実行する必要があると思われる場合は、ベクターの使用を停止する必要がありますか?(明らかに、あまりオプションではありません...)