我想读出ArrayList的第一个元素。问题是当我构造一个返回方法时,我得到一个错误,说“实体”无法转换为ArrayList'。返回函数需要是一个公共ArrayList,因为我使用foreach来返回值。有人能告诉我我做错了什么以及我能做些什么来改善这个?
实体经理(公共ArrayList)不起作用。
public class EntityManager {
private Handler handler;
private Player player;
private ArrayList<Entity> entities;
private int counter = 0;
private Comparator<Entity> renderOrder = new Comparator<Entity>(){
@Override
public int compare(Entity a, Entity b) {
if(a.getY() + a.getHeight() < b.getY() + b.getHeight())
return -1;
return 1;
}
};
public EntityManager(Handler handler, Player player){
this.handler = handler;
this.player = player;
entities = new ArrayList<Entity>();
addEntity(player);
}
public void tick(){
Iterator<Entity> it = entities.iterator();
while(it.hasNext()){
Entity e = it.next();
e.tick();
if(!e.isActief()){
it.remove();
counter();
if(counter > entities.size() + 1){
player.eindspel = true;
}
}
}
entities.sort(renderOrder);
}
public void render(Graphics g){
for(Entity e : entities){
e.render(g);
}
player.postRender(g);
}
public ArrayList<Entity> getEntities() {
return entities.get(0);
}
public void counter(){
counter++;
}
public void addEntity(Entity e){
entities.add(e);
}
public void setHandler(Handler handler) {
this.handler = handler;
}
public void setPlayer(Player player) {
this.player = player;
}
public void setEntities(ArrayList<Entity> entities) {
this.entities = entities;
}
public Handler getHandler() {
return handler;
}
public Player getPlayer() {
return player;
}
}
我正在使用的foreach从getEntities中读出值
for(Entity e : handler.getWereld().getEntityManager().getEntities()){
if(e.equals(this)){
continue;
}
if(e.getCollisionBounds(0, 0).intersects(ar)){
if(opslag.delete()){
e.delete(2);
}
}
}
我想要的结果是当e相交时我想删除我得到的实体&return;返回entities.get(0)&#39;,所以我的实体arraylist的第一个实体。只有那种方法不会起作用,当我使用“返回实体”时我的所有成员都被删除了,而不仅仅是第一个。
答案 0 :(得分:0)
如果你将外部接口概括为使用List而不是ArrayList(参见here为什么这是一个好主意),你可以使用Collections.singletonList构建一个包含第一个实体的列表
然而,对我来说,让一个名为getEntities的方法只返回一个实体似乎是非常不直观的。当你想要获得所有实体时,我仍然没有真正得到,只有一个实体。也许您可以编辑您的问题以更多地解释您的用例
答案 1 :(得分:0)
您正在实体上调用delete(int)方法
e.delete(2);
并且该方法适用于收集我认为它是你的问题来自。