Я делаю приложение, которое использует планировщик 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
) является приватной переменной (см. фрагменты ниже). Если бы предполагалось выводить свойство путем интроспекции (из методов getter и setter), то не следовало бы написать RowList
, как в getRowList()
?
Вопрос: Как Java выводит (интроспективно) имя свойства (регистр и все остальное) из методов getter?
Или @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 {
...
private List columnList;
private List rowList;
....
public List getRowList() {
return rowList;
...