gpt4 book ai didi

java - 我的 getter 函数应该放在哪里?

转载 作者:行者123 更新时间:2023-12-01 22:30:58 24 4
gpt4 key购买 nike

下面的类是一个上下文构建器,它将 Tree 对象放置在网格上的地理空间中。我创建了一个包含各种适宜性值和 id 的树木对象的数组列表:

public class TreeBuilder implements ContextBuilder<Object> {


@Override
public Context build(Context<Object> context) {
context.setId("taylor");

ContinuousSpaceFactory spaceFactory =
ContinuousSpaceFactoryFinder.createContinuousSpaceFactory(null);
ContinuousSpace<Object> space =
spaceFactory.createContinuousSpace("space", context,
new RandomCartesianAdder<Object>(),
new repast.simphony.space.continuous.WrapAroundBorders(),
50, 50);


GridFactory gridFactory = GridFactoryFinder.createGridFactory(null);
Grid<Object> grid = gridFactory.createGrid("grid", context,
new GridBuilderParameters<Object>(new WrapAroundBorders(),
new SimpleGridAdder<Object>(),
true, 50, 50));

ArrayList<Tree> trees = new ArrayList<Tree>();

int treeCount = 100;
for (int i = 1; i < treeCount; i++) {
double suitability = Math.random();
int id = i;


Tree tree = new Tree(space, grid, suitability, id);
context.add(tree);
trees.add(tree);



tree.measureSuit();

}

Tree maxTree = Collections.max(trees, new SuitComp());
System.out.println(maxTree);

for (Object obj : context) {
NdPoint pt = space.getLocation(obj);
grid.moveTo(obj, (int)pt.getX(), (int)pt.getY());

}


return context;

}


}

我相信我可以使用 getter 来访问其他类中的列表。像这样的事情......

public ArrayList<Tree> getList() {
return trees;
}

但我的问题是:上面的代码应该放在哪里?每当我放置它时,我都会收到错误,特别是“返回树;”。

另外:我还可以使用 getter 从列表中获取 maxTree 值吗?

最佳答案

不在这种情况下。

通常使用 getter 来访问字段; trees 在方法 build 中被声明为局部变量。这意味着每次调用它时,您都会得到一个新列表,并且从该方法返回后它就不再存在。

如果您确实想存储树列表(我不确定您为什么要这样做),则必须将其移至字段声明:

private List<Tree> trees = new ArrayList<>();

maxTree 值也存在类似的问题;如果您想存储它,并且看起来确实可以合理地保留在您的实例中,那么您也必须将其移动到一个字段中。它不像上面的声明那么简单,因为您只知道该方法内部的值是什么,但它的调用不应该比它复杂得多。我将其作为练习留给读者。

关于java - 我的 getter 函数应该放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27761023/

24 4 0