Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在AIDL接口中重载方法_Java_Android_Aidl - Fatal编程技术网

Java 无法在AIDL接口中重载方法

Java 无法在AIDL接口中重载方法,java,android,aidl,Java,Android,Aidl,我无法在AIDL接口中重载方法 我希望有两个同名但参数数量不同的函数,如下所示: boolean callMethod(in String pClass, in String pMethod, in String pParam); void callMethod(in String pClass, in String pMethod); 当我这样做时,我得到一个错误,说“尝试重新定义方法callMethod” 关于,AIDL不支持重载。我在文档中没有看到任何提及这一点,但谷歌在andro

我无法在AIDL接口中重载方法

我希望有两个同名但参数数量不同的函数,如下所示:

boolean callMethod(in String pClass, in String pMethod, in String pParam);
void    callMethod(in String pClass, in String pMethod);
当我这样做时,我得到一个错误,说“尝试重新定义方法callMethod”


关于,AIDL不支持重载。我在文档中没有看到任何提及这一点,但谷歌在android平台论坛上澄清了这一点。您可以在不破坏兼容性的情况下将新方法添加到AIDL接口的底部。

在AIDL接口中需要唯一的方法名称,这主要是由于java代码生成的限制。您好,jens,谢谢您的帮助。Android是否将此记录为AIDL中的一个限制?不,文档=代码与往常一样-但是如果您想看到阻止使用相同名称但不同签名的多个方法的位,您可以签出
frameworks/base/tools/AIDL/AIDL.cpp
并查看
检查类型(常量字符*文件名,文档项目\类型*项目)
method,您应该能够发现仅使用方法名称过滤重复项的位。您可以在不破坏兼容性的情况下将新方法添加到AIDL界面底部。这是解决方案吗?根据上面评论中的链接共享,有人添加了评论,说他尝试了,但运气不佳,我似乎成功添加了d在不破坏兼容性的情况下创建新方法。肯定有其他问题导致了其他评论。@Ashokredy似乎必须保留.aidl接口中方法的顺序,因此强调了以下行的重要性:“…到aidl接口的底部…”。您不能将新方法放在顶部,因为Android会按照.aidl文件中定义的顺序将具有预期签名的方法打包和解包。可能“某人”没有将新方法放在最后。。。