Java Drools声称该方法已过载

Java Drools声称该方法已过载,java,drools,optaplanner,Java,Drools,Optaplanner,我有一个类MyClass,它有一个返回类型为Long的getId()方法。我正在与optaplanner一起使用它。我从资源文件创建解算器工厂并构建解算器 SolverFactory solverFactory = SolverFactory.createFromXmlResource("/path/to/config"); Solver solve = solverFactory.buildSolver(); 执行buildSolver()时,我看到警告 Getter overloading

我有一个类MyClass,它有一个返回类型为Long的getId()方法。我正在与optaplanner一起使用它。我从资源文件创建解算器工厂并构建解算器

SolverFactory solverFactory = SolverFactory.createFromXmlResource("/path/to/config");
Solver solve = solverFactory.buildSolver();
执行buildSolver()时,我看到警告

Getter overloading detected in class mypackage.MyClass : getId (class java.lang.Object) vs getId (class java.lang.Long) 
我想知道optaplanner在哪里找到返回类型为Object的getId()方法。它不在源代码中

编辑

正如评论中指出的,警告还可能意味着drools找到了两个方法:getId(Object)和getId(Long)。这甚至更加可疑,因为我没有定义接受任何参数的getId方法

更新

我已经在我的机器上使用maven依赖项的版本中调查了这个类

<dependency>
  <groupId>org.optaplanner</groupId>
  <artifactId>optaplanner-benchmark</artifactId>
  <version>6.4.0.Final</version>
</dependency>

org.optaplanner
optaplanner基准
6.4.0.1最终版本
当ClassFieldInspector与classUnderInspection实例关联时等于“mypackage.MyClass”,则方法列表

final List<Method> methods = Arrays.asList( clazz.getMethods() );
final-List-methods=Arrays.asList(clazz.getMethods());
确实包含两个名为getId()的方法:

  • “public java.lang.Long mypackage.myClass.getId()”
  • “public java.lang.Object mypackage.myClass.getId()”

  • 问题的原因是MyClass实现了一个声明方法getId的通用接口。我已将此作为一个单独的问题发布


    因为它的一般性质与optaplanner无关。

    我怀疑没有任何人能够提供帮助。这只是由Drools/optaplanner进行的检查,但如果可能导致问题,则取决于您的应用程序。警告是由此类生成的:@Geoffrey De Smet如果警告确实意味着可能有两个getId方法具有不同的返回类型,那么这是绝对可疑的,因为不同的返回类型没有重载。您引用的消息没有说明任何有关返回类型的内容。返回类型是从哪里进入您的分析的?@LewBloch,我有一个getIt()方法,返回类型为Long,没有任何参数。所以我认为引擎已经检测到了相同的方法,但是使用Object而不是Long