2017-04-20 46 views

回答

0

Java使用類型擦除,因爲正如在@khelwood的評論中指出的那樣,泛型是後來的思想,並在1.5中引入了語言。

此外,運行時類型檢查的計算量很大,因此在編譯時處理檢查以減少運行時檢查的需求。

另外,正如InjuredThePatient在評論中指出的那樣,您看到的「運行時類型檢查」與ArrayList s實際上是內存分配錯誤。

0

參考數組必須進行運行時檢查,因爲它們的怪異行爲允許靜態不安全的隱式轉換。您可以將String[]分配給Object[]並將Thread存儲到其中。如果在運行時沒有檢查它(它會拋出一個ArrayStoreException),那麼類型安全性將被破壞,因此移動代碼安全。

泛型的複雜性導致了各種模糊的編譯器錯誤。這些都是相對良性的,但是如果泛型被JVM強制執行,它們就會成爲漏洞。事實證明,規範本身是不健全的。

如果Object[]是唯一的參考數組類型,那麼Java將會是更好的語言。也會迫使main更明智一些。