传递实现 class 而不是接口时出现 MissingMethodException

MissingMethodException when passing an implementing class instead of an interface

我正在 Jira 工作流上开发一个脚本(使用 Adaptavist Scriptrunner v.6.34),我遇到了一个问题,其中 groovy 不接受接口实现作为签名函数的参数允许实现的接口。

代码

import com.atlassian.jira.issue.link.DefaultRemoteIssueLinkManager;

(...)

def remoteLink = DefaultRemoteIssueLinkManager.getRemoteIssueLinksForIssue(issue)

(issuecom.atlassian.jira.issue.IssueImpl 类型的构建变量)

会发生什么

groovy.lang.MissingMethodException: No signature of method: static com.atlassian.jira.issue.link.DefaultRemoteIssueLinkManager.getRemoteIssueLinksForIssue() is applicable for argument types: (com.atlassian.jira.issue.IssueImpl) values: [ADA-24684]
Possible solutions: getRemoteIssueLinksForIssue(com.atlassian.jira.issue.Issue)
    at Script6.run(Script6.groovy:32)

我不明白groovy怎么不接受接口实现。

到目前为止我尝试了什么

所有这些情况都返回了原始异常。

我已经打印了 类 的方法和接口,一切都与文档相符,所以这里没有版本不匹配。

我不知道还能做什么,因为它超出了我 java/groovy 的知识范围。我问过 java 专家的同事,他们没有找到这种行为的原因。有什么想法吗?

DefaultRemoteIssueLinkManager.getRemoteIssueLinksForIssue(issue)

它试图在 DefaultRemoteIssueLinkManager class 上调用名为 getRemoteIssueLinksForIssue 的静态方法。好像没有这样的方法,你看到的错误和那个是一致的。

您在 docs.atlassian.com/software/jira/docs/api/8.19.0/com/atlassian/jira/issue/link/DefaultRemoteIssueLinkManager.html#getRemoteIssueLinksForIssue-com.atlassian.jira.issue.Issue- 链接的方法是实例方法,不是静态方法。