[英]How can I write Long[] to a parcel?
我正在嘗試將Long []數組寫入一個包裹,但它僅接受long []數組作為參數。
( Parcel類型的方法writeLongArray(long [])不適用於參數(Long []) )
public class SomeClass implements Parcelable {
private Long minutes, lastUpdated;
...
...
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeLongArray(new Long[] {this.minutes, this.lastUpdated });
}
這似乎可行,但這是允許的:
out.writeLongArray(new long[] {this.minutes, this.lastUpdated });
這個:
out.writeLongArray(new long[] {this.minutes, this.lastUpdated });
之所以可行,是因為您正在使用數組初始化器,其中數組元素已明確列出。 這些元素中的每一個都被解包成一個原始的整整整整一整天 ,因此代碼可以編譯並成功運行,這沒有錯。 如果您有Long的集合,則可以循環執行轉換:
long[] unboxedLongs = new long[boxedLongs.length];
for(int i = 0; i < boxedLongs.length; i++) {
unboxedLongs[i] = boxedLongs[i].longValue();
}
每次要將盒裝數組轉換為非盒裝數組時,編寫起來都很繁瑣,但沒有通過SDK(afaik)進行的直接轉換。 有一些第三方庫可以使您編寫較短的代碼,例如使用Apache Commons Lang ArrayUtils類 :
long[] unboxedLongs = ArrayUtils.toPrimitive(boxedLongs);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.