所以它看起來像答案是沒有辦法來隱式轉換的類型的載體爲有效超類型。它必須與全局矢量顯式執行。功能。
所以我實際問題是問題的混合:)
這是正確使用矢量。作爲一個通用的參考到另一個向量,但是,它不能像這樣進行:
var spriteList:Vector.<Sprite> = new Vector.<Sprite>()
var genericList:Vector.<Object> = new Vector.<Object>()
genericList = spriteList // this will cause a type casting error
應利用全球向量()函數/施放,像這樣進行分配:
var spriteList:Vector.<Sprite> = new Vector.<Sprite>()
var genericList:Vector.<Object> = new Vector.<Object>()
genericList = Vector.<Object>(spriteList)
這是一個簡單的例子,我沒有閱讀documentation。
下面是一些測試代碼,我期待Vector。隱式投射到Vector。 < *>。
public class VectorTest extends Sprite
{
public function VectorTest()
{
// works, due to <*> being strictly the same type as the collection in VectorContainer
var collection:Vector.<*> = new Vector.<String>()
// compiler complains about implicit conversion of <String> to <*>
var collection:Vector.<String> = new Vector.<String>()
collection.push("One")
collection.push("Two")
collection.push("Three")
for each (var eachNumber:String in collection)
{
trace("eachNumber: " + eachNumber)
}
var vectorContainer:VectorContainer = new VectorContainer(collection)
while(vectorContainer.hasNext())
{
trace(vectorContainer.next)
}
}
}
public class VectorContainer
{
private var _collection:Vector.<*>
private var _index:int = 0
public function VectorContainer(collection:Vector.<*>)
{
_collection = collection
}
public function hasNext():Boolean
{
return _index < _collection.length
}
public function get next():*
{
return _collection[_index++]
}
}
這是一個很好的問題。未知領域! – Iain 2009-02-28 19:53:16