Я делаю приложение, которое использует планировщик Drools.
@ValueRangeFromSolutionProperty
должен ссылаться на свойство из другого класса (в данном случае NQueens
). Из JavaDocs для @ValueRangeFromSolutionProperty:
propertyName
The property name of which exists a getter on the Solution that returns a Collection.
Но я заметил несоответствие: аннотатор использует свойство rowList
из NQueens
. Но rowList
(в отличие от RowList
) является частной переменной (см. Фрагменты ниже). Если предполагалось, что он выводит свойство путем интроспекции (с помощью методов получения и установки), не следует ли его писать RowList
, как в getRowList()
?
Вопрос: Как Java определяет (анализирует) имя свойства (регистр и все) из методов получения?
Или @ValueRangeFromSolutionProperty
обращается к частным переменным напрямую?
Предыстория: из Queen.java
, класс, представляющий ферзя на шахматной доске:
public class Queen extends AbstractPersistable {
....
@ValueRangeFromSolutionProperty(propertyName = "rowList")
public Row getRow() {
return row;
....
Из NQueens.java
, класс, из которого @ValueRangeFromSolutionProperty
получает свойство:
public class NQueens extends AbstractPersistable implements Solution<SimpleScore> {
...
private List<Column> columnList;
private List<Row> rowList;
....
public List<Row> getRowList() {
return rowList;
...