java - Camel AmbiguousMethodCallException 抽象类

标签 java exception apache-camel

我有三个类(class)

public abstract FoundationReport
{
    public abstract FoundationDetails getDetails();
}

public abstract BaseReport extends FoundationReport
{
    public abstract BaseDetails getDetails();
}

public Report extends BaseReport
{

    ReportDetails reportDetails;

    public ReportDetails getDetails()
    {
        return reportDetails
    }
}

ReportDetails 扩展了 BaseDetails,BaseDetails 扩展了 FoundationDetails。

在我的 Camel xml 中,我有一个部分:

<convertBodyTo type="path.to.Report" />
        <when>
            <simple>${body.details.type} == 'myself'</simple>
...

然而调用 body.details.type 的结果是:

Caused by: org.apache.camel.component.bean.AmbiguousMethodCallException:     
Ambiguous method invocations possible: 
[public path.to.ReportDetails  path.to.Report.getDetails(), 
public abstract path.to.BaseDetails path.to.BaseReport.getDetails(), 
public abstract path.to.FoundationDetails path.to.FoundationReport()]

我曾(错误地)假设将使用 Report 类中 getDetails 的唯一具体实现。为什么会出现此异常?我该如何解决?

最佳答案

这是 Apache Camel 中的一个错误。我已经复制了它,并记录了一张票来解决这个问题:https://issues.apache.org/jira/browse/CAMEL-9032

关于java - Camel AmbiguousMethodCallException 抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31671894/

相关文章:

java - 使用 java.net.UrlConnection 和输出流通过 Grails 1.3.7 下载大文件时出错

python - 仅在引发异常时清理对象

java - Hibernate 找不到 getter

java - 未找到架构 : jms 的组件

java - 从 org.apache.camel.Exchange 获取 SOAPMessage

java - 如何将两个 URL 路由映射到 Spring MVC (3.0) 中的同一个处理程序方法?

java - 使用标记列表构建抽象语法树

java - 如何在 Camel 中将未编码的对象设置为交换属性

java - 为什么我的 Hibernate session 始终为空?

java - Swagger api 客户端方法返回 void