簡體   English   中英

如何將Long []寫入包裹?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM