JAVA為什麼不讓建立泛型數組,java泛型數組

來源:互聯網
上載者:User

JAVA為什麼不讓建立泛型數組,java泛型數組

首先,我覺得定製java標準的那些人完全可以讓java建立泛型數組;只是他們權衡了一下,覺得還是禁止了的好,一下就說說我的揣測:

如果我們寫如下代碼是沒有問題的:

List<String> a = new ArrayList<String>();
那麼為嘛到了數組就不行呢:

List<String>[] arr = new ArrayList<String> [10];
我們先來看看陣列變數和普通變數的區別:陣列變數arr和普通變數a都在棧中,但是呢!arr[0]在堆中。所以呢?所以我們有下面一個例子:

List<String>[] arr = new ArrayList<String> [10];Object[] orr = arr;List<StringBuffer> buf = new ArrayList<StringBuffer> ();orr[0] = buf;List<String> str = arr[0];String val = str.getValue();
可以發現,堆中的第0個元素是List<StringBuffer>了,但是arr[0]還是指向了它,如果是普通變數,這是不可能的;所以,即便是引入了泛型,也不是安全的;最後一句,由於編譯器會加上string轉化,造成ClassCastException;泛型本來就是為了安全,如果不能保證數組的安全,為啥還有多此一舉呢?

本文主要參照:http://www.blogjava.net/deepnighttwo/articles/298426.html




Java 泛型數組(見代碼)

你建立的是一個資料對象而不是ArrayList對象,
把後面的泛型去掉就可了
再者,普通變數名應該小寫,盡量不要同java關鍵字
相同
 
java裡面數組是不是泛型類?

數組不屬於泛型類 ,這本書我沒有! 不過你可以多提問題,俺一一解答你。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.