示例:我有一个班级'
;class Model {
private ArrayList<Picture> pictures;
public ArrayList<Picture> getPictureList() { return pictures; }
}
(我有实现所有这些的方法,这只是例如)
然后我有
abstract class Picture{
public boolean touches(Picture p) {}
}
我希望这个函数从about arraylist中提取值,以便与参数&#34; p&#34;进行比较。看两张照片是否相互碰触。 我想用这样的东西
public boolean touches(Picture p) {
for (Picture picture : pictures) {
//compare values
}
}
我怎样才能做到这一点,以便我可以从班级&#39;模型中提取价值。进入抽象类图片?
答案 0 :(得分:0)
您已经拥有getPictureList()
方法,因此您可以使用它:
public boolean touches(Picture p) {
for (Picture picture : modelInstance.getPictureList()) {
//compare values
}
}
但是,更好的实施方法是删除getPictureList()
并将其替换为Picture getPicture(int i)
和int getNumberOfPictures()
。这样,Model类的用户将无法访问内部ArrayList(这将允许他们直接操作它)。
然后你的代码看起来像这样:
public boolean touches(Picture p) {
for (int i = 0; i < modelInstance.getNumberOfPictures(); i++) {
Picture picture = modelInstance.getPicture(i);
//compare values
}
}
另一种方法是实现迭代器,即让Model
实现Iterable<Picture>
接口。
然后你的代码看起来像这样:
public boolean touches(Picture p) {
for (Picture picture : modelInstance) {
//compare values
}
}
答案 1 :(得分:0)
所以我想回答我自己的问题,我不确定这是否会对任何人有所帮助,但我认为无论如何我都会把它发布在这里。基本上我不正确地接近这个问题。 Model
类创建类型为Picture
的ArrayList,因此值已存在于Picture
类变量中。我想要做的是在不需要的时候将整个ArrayList发送到类中。我需要做的是从overlaps()
类调用方法Model
,如此
for (Picture p1 : pictures) {
for (Picture p2 : pictures) {
p1.overlaps(p2);
}
}
这样做会使每张图片对照ArrayList中的每一张图片并确定它们是否重叠。 (假设重叠功能正确实现) 这实际上是用Java理解的一个非常重要的想法,幸运的是我有一个可以解释它的朋友