例如,有两个类
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值?
答案 0 :(得分:0)
这是我以前处理过的烦人事。我假设你的两个对象都是可以实现的。我能够找到的唯一解决方案就是创建一个可以分配的容器对象。因为你的A和B类都是可以分配的,所以它是一个非常容易创建的对象。
我认为发生这种情况的原因是因为使用的CREATOR来自A的参数类型。如果可能的话我建议反对AIDL,但有些情况确实有意义。希望有所帮助。