如果您调用了一个协议函数,但传递了错误的参数数量(例如,忘记了一个参数),您目前会看到一个消息:“未找到接口...的协议...函数...的单个方法...”。问题代码从Reflector中获取匹配的方法,如果匹配的数量不等于1,就创建这个消息。
这里实际上有两种情况:
- 匹配等于0 - 这通常由于拼写错误而发生。
- 匹配数大于1 - 这个情况可能不太常见。
我建议对于等于0的情况,在最开始应该有略微不同的文本,并在其中提供有关预期参数数量的提示。
"未找到接口...的参数...数量的方法:...,用于协议...函数..."。
对于匹配数大于1的情况,也应该进行类似的更改:“找到多个:接口...的参数...数量的方法:...,用于协议...函数...”。
附上补丁。我使用了假设应该比嵌套if/else有更好性能的case。我不确定报告的参数数量应该匹配实际的Java方法参数数量还是Clojure协议函数参数数量(包括目标)。我选择了前者。
我没有添加测试,因为我不确定是否应该在测试中检查错误消息。如果需要,我愿意添加。