如何将intent的额外对象[]转换为MyClas []

时间:2014-02-19 00:04:11

标签: java android serialization casting parcelable

我有这段代码

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.offers_list);

    Intent callingIntent = getIntent();
    if (callingIntent != null) {
        Bundle extras = callingIntent.getExtras();
        if (extras != null) {
            Offer[] offers = (Offer[]) extras
                    .getSerializable(PublicMacros.OFFERS_LIST);
        }
    }

我执行

后出现此错误

02-19 01:59:52.291: E/AndroidRuntime(26440): Caused by: java.lang.ClassCastException: java.lang.Object[] cannot be cast to com.zoomer.offers.Offer[]

我怎样才能正确投射?

1 个答案:

答案 0 :(得分:0)

无法将object[]强制转换为T[],其中T是一个abitrary类。

但你可以使用

Offer[] array = Arrays.copyOf(a, a.length, Offer[].class);

其中a是来自

的返回数组
extras.getSerializable(PublicMacros.OFFERS_LIST);

或者你可以遍历数组中的每个元素并将每个元素转换为自己的元素。