Java Singleton枚举实例重置实例列表

Java Singleton枚举实例重置实例列表,java,enums,singleton,Java,Enums,Singleton,有人能帮我解决enum单例实例的问题吗?实例列表被还原或清除,我不知道如何或为什么: public enum ObjectMap { INSTANCE; ObjectMap() { this.displayObjectList = new ArrayList<DisplayObject>(); } private final List<DisplayObject> displayObjectList; public boolean addObject(fi

有人能帮我解决enum单例实例的问题吗?实例列表被还原或清除,我不知道如何或为什么:

public enum ObjectMap {

INSTANCE;

ObjectMap() {
    this.displayObjectList = new ArrayList<DisplayObject>();
}

private final List<DisplayObject> displayObjectList;

public boolean addObject(final DisplayObject paramDisplayObject) {
    boolean success = false;
    if (null != paramDisplayObject && !this.isTaken(paramDisplayObject.x, paramDisplayObject.y)) {
        this.displayObjectList.add(paramDisplayObject);
        success = true;
    }
    return success;
}

public boolean isTaken(final int paramX, final int paramY) {
    for (final DisplayObject displayObject : this.displayObjectList) {
        if (displayObject.x == paramX && displayObject.y == paramY) {
            return true;
        }
    }
    return false;
}

我试过了,没有问题。但这实际上取决于placeBomb()方法的功能。你也可以发布一下吗?@DennisHunziker它调用方法
ObjectMap.INSTANCE.addObject(displayObjectBomb)在代码中的注释中,没有任何内容else@DennisHunziker好的,我检查了整个代码,发现一个线程应该在延迟后立即从列表中删除对象(这就是为什么我要执行thread.sleep(2010))。好的,这很有意义;-)你摘录的代码看起来不错,我试过了,没有问题。但这实际上取决于placeBomb()方法的功能。你也可以发布一下吗?@DennisHunziker它调用方法
ObjectMap.INSTANCE.addObject(displayObjectBomb)在代码中的注释中,没有任何内容else@DennisHunziker好的,我检查了整个代码,发现一个线程应该在延迟后立即从列表中删除对象(这就是为什么我要执行thread.sleep(2010))。好的,这很有意义;-)只需摘录中的代码就可以了。
@Test
public void testBombEvent() {
    Player player = new Player(PLAYER_X, PLAYER_Y);

    // calls ObjectMap.INSTANCE.addObject(DisplayObject bomb), debugging this successfully adds the object to the list
    player.placeBomb(); 

    // AssertionError because ObjectMap.INSTANCE.displayObjectList is empty???
    Assert.assertTrue(ObjectMap.INSTANCE.isTaken(PLAYER_X, PLAYER_Y));
    final DisplayObject object = ObjectMap.INSTANCE.getObject(PLAYER_X, PLAYER_Y);
    Assert.assertEquals(object.objectType, GameObjectType.BOMB);

    try {
        Thread.sleep(2010);
        Assert.assertFalse(ObjectMap.INSTANCE.isTaken(PLAYER_X, PLAYER_Y));
    } catch (final InterruptedException e) {

    }
}