私は、戻り値の型がlongのメソッドgetId()を持つクラスMyClassを持っています。私はoptaplannerでそれを使用しています。私は、リソースファイルからソルバーファクトリを作成し、ソルバを構築します。Droolsは、メソッドがオーバーロードされていると主張しています
SolverFactory solverFactory = SolverFactory.createFromXmlResource("/path/to/config");
Solver solve = solverFactory.buildSolver();
buildSolver()が実行されると、私はoptaplannerは方法のgetId(見つかった場所私は戻り値の型のオブジェクトで)疑問に思って警告
Getter overloading detected in class mypackage.MyClass : getId (class java.lang.Object) vs getId (class java.lang.Long)
を参照してください。それはソースコードのどこにもありません! getId(オブジェクト)とのgetId(ロング):
EDITコメントで指摘したように
は、警告は、2つの方法を発見したDroolsのこと、意味するかもしれません。私はパラメータを取るgetIdメソッドを定義していないので、これはさらに疑わしいです。
UPDATE
私はClassFieldInspectorがclassUnderInspectionでインスタンス化されると、私はMavenの依存関係
<dependency>
<groupId>org.optaplanner</groupId>
<artifactId>optaplanner-benchmark</artifactId>
<version>6.4.0.Final</version>
</dependency>
を使用して私のマシン上で持っているバージョンではクラスhttps://github.com/kiegroup/drools/blob/master/drools-core/src/main/java/org/drools/core/util/asm/ClassFieldInspector.javaを検討してきたが、「mypackage.MyClass」に等しいです、次にメソッドのリスト
final List<Method> methods = Arrays.asList(clazz.getMethods());
- "公衆がjava.lang.Long mypackage.myClass.getId()"
- "公共java.lang.Objectのmypackage.myClass.getId()" :のgetId(と呼ばれる2つのメソッド)が含まれていndeed
誰もが[mcve]なしで誰かを助けることができるとは思っていません。 –
Drools/Optaplannerによって行われるチェックですが、問題が発生する可能性がある場合はアプリケーションによって異なります。警告はこのクラスによって生成されます:https://github.com/kiegroup/drools/blob/master/drools-core/src/main/java/org/drools/core/util/asm/ClassFieldInspector.java –
@Geoffrey De Smet警告がある場合、さまざまな戻り値の型を持つ2つのgetIdメソッドが存在する可能性があることを意味する場合、さまざまな戻り値型のオーバーロードがないため、絶対に疑わしいものです。 – laune