我想知道是否可以将lambda表达式存储在某种容器中,例如ArrayList或HashMap。 我想更改那段代码:
public enum OPCODE implements BinaryOperator<Integer> {
MOV((x, y) -> y),
INC((x, y) -> ++x),
DEC((x, y) -> --x),
ADD((x, y) -> x + y),
SUB((x, y) -> x - y);
private final BinaryOperator<Integer> binaryOperator;
OPCODE(BinaryOperator<Integer> binaryOperator) {
this.binaryOperator = binaryOperator;
}
@Override
public Integer apply(Integer integer, Integer integer2) {
return binaryOperator.apply(integer, integer2);
}
}
转化为类似这样的内容:
List<BinaryOperator<Integer>> opcodes = new ArrayList<BinaryOperator<Integer>>(){
((x, y) -> y),
((x, y) -> ++x)
};
等等。
然后像这样使用它:
opcodes[0].apply(a, b);
这真的可能吗?
INC
和DEC
可能没有达到期望的效果,因为Java是按值传递的,所以修改参数并不会改变调用方的任何值,因此(x, y) -> ++x
是表述(x, y) -> x+1
的一种误导方式,同样地,(x, y) -> --x
实际上是(x, y) -> x-1
。 - HolgerList
和(2)如何使用给定元素实例化ArrayList
... - MCMastery