我正在制作一个使用 Drools 规划器的应用程序。
@ValueRangeFromSolutionProperty
应该引用另一个类的属性(在NQueens
这种情况下)。来自@ValueRangeFromSolutionProperty 的JavaDocs:
propertyName
The property name of which exists a getter on the Solution that returns a Collection.
但我注意到一个不一致的地方:注释器使用rowList
来自NQueens
. 但是rowList
(相对于RowList
)是一个私有变量(见下面的片段)。如果它应该通过自省来推断一个属性(从它的 getter 和 setter 方法),它不应该拼写RowList
为 ingetRowList()
吗?
问题: Java 如何从 getter 方法推断(内省)属性名称(大小写和全部)?
还是直接@ValueRangeFromSolutionProperty
访问私有变量?
背景细节: From Queen.java
,一个代表棋盘上皇后的类:
public class Queen extends AbstractPersistable {
....
@ValueRangeFromSolutionProperty(propertyName = "rowList")
public Row getRow() {
return row;
....
From 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;
...