最近質問がありましたhereソース変数があるリスナの実装方法異なる計画エンティティクラス異なるエンティティのソースを持つCustomVariableListener
@PlanningEntity
class FirstPlanningEntityClass{
@PlanningVariable
int a;
}
と私は私の影の計画変数を更新したい私の第三(影)計画エンティティで
@PlanningEntity
class SecondPlanningEntityClass{
@PlanningVariable
int b;
}
ときのいずれかa
またはb
変化(すなわち、a
やソースなどb
)など、:
@PlanningEntity //shadow planning entity
class ShadowEntityClass{
@CustomShadowVariable(variableListenerClass = MyListener.class,
sources = {@CustomShadowVariable.Source(entityClass = FirstEntityClass.class, variableName = "a"),
@CustomShadowVariable.Source(entityClass = SecondEntityClass.class, variableName = "b")})
public local int getMyShadowVariable(){...}
しかし、MyListenerClass
はパラメータVariableListener
ワットを実装する必要があります。 i番目の型パラメータがソース変数が上にあるエンティティクラスに対応して1つだけの型パラメータ、:
public class MyListenerClass implements VariableListener<Entity_>{...}
しかし、ソース変数は計画エンティティクラスです。この問題を解決するために
、私はいくつかのことを試してみました:
- 私は、例えばと
FirstPlanningEntityClass
とFirstPlanningEntityClass
をインターフェースすることはできません2つのエンティティクラスとして共通のCommonPlanningEntityInferface
は大きく異なります。この共通インタフェースは、VariableListener
の型パラメータとして使用されている可能性があります。 Iはまた、例えば、互いの上にこのような
@CustomShadowVariable(variableListenerClass = MyFirstListener.class, sources = {@CustomShadowVariable.Source(entityClass = FirstPlanningEntity.class, variableName = "a")}, variableListenerClass = MySecondListener.class, sources = {@CustomShadowVariable.Source(entityClass = SecondPlanningEntity.class, variableName = "b")})
又は二注釈として
@CustomShadowVariable
引数リスト内の2つの異なるリスナクラスを指定することはできません@CustomShadowVariable(variableListenerClass = MyFirstListener.class, sources = {@CustomShadowVariable.Source(entityClass = FirstPlanningEntity.class, variableName = "a")}) @CustomShadowVariable(variableListenerClass = MySecondListener.class, sources = {@CustomShadowVariable.Source(entityClass = SEcondPlanningEntity.class, variableName = "b")})
マニュアルだけ同じクラスの多くの計画変数または別のクラスの1つの計画変数(セクション4.3.6.4。、6.5.0)を指します。
ソースとして2つの計画変数を持つシャドウ変数を実装するにはどうすればいいですか異なる計画エンティティクラスですか? hereの答えは、計画エンティティクラスの2つのシャドウ変数の変更を主にカバーしていました。
設計上、シャドウ変数ごとに1つの変数リスナの実装しかできないため、互いに矛盾することはありません。 –