我可以使用预定义参数运行排队的 lambda 吗?

问题描述 投票:0回答:0

我希望将 lambda 添加到队列中,以便在轮询队列时运行,使用将它们添加到队列时传递给它们的参数。像下面这样的东西:

@FunctionalInterface
public interface Movement {

Deque<Movement> movementDeque = new ArrayDeque<>();

    void move(MovementType type);

}

...

public void addToQueue(Direction direction){

    MovementType type = switch (direction) {
        case LEFT -> MovementType.TURN_LEFT;
        case RIGHT -> MovementType.TURN_RIGHT;
        case UP -> MovementType.FORWARD;
        case DOWN -> MovementType.BACKWARD;
    }
    
    Movement.movementDeque.offer((m) -> subject.move(type));

}

...
               
Movement.movementDeque.poll(); // Running the lambda later

这可能吗?到目前为止,我所做的一切似乎都不允许我使用在定义它们时传递给它们的参数来调用 lambda。感觉我在这里误解了一些非常基本的东西。

java lambda queue functional-interface
© www.soinside.com 2019 - 2024. All rights reserved.