Я делаю приложение, которое использует планировщик 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 выводит (анализирует) имя свойства (case и все) из методов получения?
Или @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;
...