2014-07-10 14 views
1

例如,有兩類在AIDL多態性INOUT PARAM

class B extends A { public int x; }; 
在AIDL

public void func(inout A params); // the function does not change B.x value 

然後有以下代碼:

B objB; 
objB.x = 99; 
IObject.func(objB); 

當代碼exectued ,因爲「func」函數只返回objB的部分A,所以objB.x將被改變(不是99),objB.x將得到一個默認值(大多數是0)。

我的問題:

如何使objB.x是恆定的,如果「功能」功能不改變B.x價值?

+0

對於常量u可以聲明它爲靜態最終 – KOTIOS

+0

@mona但objB.x可能在其他情況下更改。我只是希望它在這種情況下不變。 – Zachary

+0

所以在功能只有你不想改變B.x? func B.x中的 – KOTIOS

回答

0

這是我以前處理過的一件煩人的事情。我認爲你的兩個對象都可以實現parcelable。我唯一能找到的解決方案就是創建一個可以分類的容器對象。因爲你的類A和B都是可以分類的,所以它是一個非常容易創建的對象。

發生這種情況的原因我認爲是因爲使用的CREATOR來自於A的參數類型。其原因是我建議對AIDL儘可能但是在某些情況下它確實有意義。希望有所幫助。