首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Set 轉 byte[][] 陣列的正確姿勢

     編輯:程式設計綜合問答

問題

Set 呼叫 toArray() 回傳 Object[],強轉 (byte[][]) 拋 ClassCastException。

原因

泛型擦除導致 toArray() 無法感知元件型別,只能回傳 Object[]。

正確寫法

Set set = ...;
// 1. 傳入型別為 byte[][] 的零長度陣列(或預分配大小)
byte[][] array = set.toArray(new byte[0][]); // JDK 11+ 推薦 new byte[0][]
// 2. 或顯式指定大小(略微效能優勢)
byte[][] array = set.toArray(new byte[set.size()][]);

原理

toArray(T[] a) 簽名要求傳入**期望型別的陣列實例**,運行時以此型別創建新陣列並填充元素。

補充

  • 若元素為基本型別陣列(byte[]),目標型別必須是 byte[][](二維陣列)。
  • JDK 11+ new byte[0][] 比預分配大小更快(避免零填充開銷)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved