2017-06-23 13 views
0

私は、戻り値の型が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()); 

  1. "公衆がjava.lang.Long mypackage.myClass.getId()"
  2. "公共java.lang.Objectのmypackage.myClass.getId()"
  3. :のgetId(と呼ばれる2つのメソッド)が含まれていndeed
+1

誰もが[mcve]なしで誰かを助けることができるとは思っていません。 –

+0

Drools/Optaplannerによって行われるチェックですが、問題が発生する可能性がある場合はアプリケーションによって異なります。警告はこのクラスによって生成されます:https://github.com/kiegroup/drools/blob/master/drools-core/src/main/java/org/drools/core/util/asm/ClassFieldInspector.java –

+1

@Geoffrey De Smet警告がある場合、さまざまな戻り値の型を持つ2つのgetIdメソッドが存在する可能性があることを意味する場合、さまざまな戻り値型のオーバーロードがないため、絶対に疑わしいものです。 – laune

答えて

0

この問題は、MyClassがgetIdメソッドを宣言するジェネリックインターフェイスを実装していることが原因です。私は理由optaplannerに関連しないその一般的な性質の別の質問

Implementing generic java interface adds additional method

としてこれを掲載しています。

関連する問題