переменная объекта является клоном из диапазона переменных? - PullRequest
0 голосов
/ 28 сентября 2018
class Lecture {
    Teacher t1 = new Teacher()
    Teacher t2 = new Teacher()
    Teacher t3 = new Teacher()


    @PlanningVariable(valueRangeProviderRefs = ["teacherRange"])
    Teacher teacher 


    @ValueRangeProvider(id = "teacherRange")
    public List<Teacher> getTeacherRange() {
        [t1, t2, t3]
    }

}

Этот код написан на groovy.

Когда я отлаживал, я обнаружил, что объект от учителя имеет хеш-код, отличный от t1, t2, t3, я думаю, что учитель является объектом-клоном,это правильно?

Итак, если я хочу обновить учителя, назначенного учителю, как?потому что я не мог обновить t1, t2, t3 в другом месте

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Я не уверен, что вы имеете в виду, когда говорите, что хотите «обновить учителя, назначенного учителю», но если вы хотите изменить одно из свойств вашей переменной или факта проблемы, примитевзгляд на ProblemFactChange

0 голосов
/ 28 сентября 2018

Просматривая документацию PlanningVariable, я прочитал:

Он указан в получателе свойства java-компонента класса PlanningEntity.

https://docs.jboss.org/drools/release/6.1.0.Final/optaplanner-javadoc/org/optaplanner/core/api/domain/variable/PlanningVariable.html

Итак, вы должны аннотировать метод, а не переменную.Ваш код должен быть похож на:

class Lecture {
  Teacher t1 = new Teacher()
  Teacher t2 = new Teacher()
  Teacher t3 = new Teacher()

  private Teacher teacher 
  @PlanningVariable(valueRangeProviderRefs = ["teacherRange"])
  Teacher getTeacher(){
      teacher
  } 
  void setTeacher(Teacher teacher){
    this.teacher=teacher
  }

  @ValueRangeProvider(id = "teacherRange")
  public List<Teacher> getTeacherRange() {
    [t1, t2, t3]
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...