我想知道是否有可能將lambda存儲在某個容器中,例如。 ArrayList或HashMap。 我想改變這種代碼:Java 8 - 在列表中存儲lambdas
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'。 – Holger
所以真的這個問題只是問(1)如何使用一個'List'和(2)如何實例化具有給定元素的'ArrayList' ... – MCMastery
@Holger即使IDE應該在那裏觸發警告(如果OP是使用一個) – Eugene