看不懂這段數組的賦值代碼。public RemoteControl() {
onCommands = new Command[7];
offCommands = new Command[7];
for (int i = 0; i < 7; i++) {
onCommands[i] = () -> { };
offCommands[i] = () -> { };
}
}這是啥意思?。?nbsp; onCommands[i] = () -> { };
offCommands[i] = () -> { };按這樣子運行,結果是對的;但如果改成 等于null,就會報錯,顯然“() -> { }”并不代表賦空值。
2 回答

炎炎設計
TA貢獻1808條經驗 獲得超4個贊
() -> {}
是一個 Java 8
的新特性:lambda
表達式。
命令模式在 Java 8
以前的實現是類似這樣的:
pulic interface Command { void doCommand(); }
這種單方法的接口,在 Java 8
里允許使用簡潔的 lambda
表達式來描述,如果這個方法有參數,比如:
public interface Command { void doCommand(int arg1, int arg2); }
那么,就可以用 (arg1, arg2) -> { System.out.println(arg1 + arg2); }
來描述一個接口的實現。
這是 函數式編程 的一種體現,你可以多了解一下 Java 8
這方面的新特性。
所以回過頭來說,() -> {}
表示的是,實現了某個接口的空參、啥都不干的接口實例。
具體實現的是哪個接口取決于 onCommands
的類型聲明。
so,你這個例子里意思就是:
創建兩個數組,分別是開啟時要執行的命令、關閉時要執行的命令,數組長度為7;
為了初始化,避免空指針,為這兩個數組賦值 啥都不干 的 接口實例 是最合適的。
- 2 回答
- 0 關注
- 1322 瀏覽
添加回答
舉報
0/150
提交
取消