2013-07-06 51 views
0

如何初始化存儲在變量中的類的Vector?初始化一個未知類類型的向量

function initVector(Type:Class) { 
    var vec:Vector.<Type> = new Vector.<Type>() 
} 

initVector(int)使編譯器錯誤:
1046:類型未找到或不是編譯時常:類型。
1120:訪問未定義的屬性類型。

什麼是實現這一目標的正確方法是什麼?

回答

2

正如我已經研究並解釋elsewhere,指定一個非泛型類型的載體只會有所作爲,如果你使用一個號碼類型(intuintNumber) - 這些都是性能優化變化。所有其他向量都是相同的通用Vector.<Object>「底層」 - 所有類型檢查都是在編譯時完成的,爲您提供一些代碼完成等方面的幫助,但在運行時絕對沒有影響。因此,除非您只使用數字(在這種情況下,將數字轉換爲數字可能是個想法),那麼使用Vector.<Object>或更好:絕對可以:數組。

+0

因此,據我所知,你說'除了'int','uint'和'Number'的容器之外,'Array'在所有情況下比'Vector'更可取?那麼對於上述以外的其他類型使用'Vector'有什麼意義? – bananasplits

+0

這會讓事情過於簡單化。在很多情況下,使用類型化向量可以減少必須編寫的代碼量,並使其更具可讀性。在性能方面,它們可能並不是更好的選擇,但我會選擇90%以上的可讀性 - 只有當替代方案是Vector時。 ',當有明顯的性能優化需求時,或者當您大量使用修改時,如果您另有決定,則可以使用Array更廣泛的API來更好地服務。 – weltraumpirat

+0

在你的情況下,矢量的類型將在運行時決定,所以你的代碼必須是通用的,並且使用內省,類型轉換等,換句話說,使用矢量沒有什麼可以獲得的。 – weltraumpirat