AIDL inout param中的多态

时间:2014-07-10 04:07:08

标签: android aidl

例如,有两个类

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 );

当代码被激活时,objB.x将被更改(而不是99),因为" func"函数只返回objB的A部分,objB.x将得到一个默认值(大多数为0)。

我的问题:

如果" func"如何使objB.x保持不变函数不会改变B.x值?

1 个答案:

答案 0 :(得分:0)

这是我以前处理过的烦人事。我假设你的两个对象都是可以实现的。我能够找到的唯一解决方案就是创建一个可以分配的容器对象。因为你的A和B类都是可以分配的,所以它是一个非常容易创建的对象。

我认为发生这种情况的原因是因为使用的CREATOR来自A的参数类型。如果可能的话我建议反对AIDL,但有些情况确实有意义。希望有所帮助。

相关问题