我只是嘗試了很少的java-8函數式編程,我對lamda表達式的行爲幾乎沒有懷疑。我試圖用簡單的命令模式來解釋下面的問題。Java-8 lambda表達式與函數接口的行爲
public interface Editor {
public void open();
public void close();
// public void save();
}
編輯器實現
public class MyEditor implements Editor {
@Override
public void open() {
System.out.println("...opening");
}
@Override
public void close() {
System.out.println("...closing");
}
}
接口行動
// this is actually a @FunctionalInterface
public interface Action {
public void perform();
}
可操作的項目。
public class Open implements Action {
private final Editor editor;
public Open(Editor editor) {
this.editor = editor;
}
@Override
public void perform() {
editor.open();
}
// Similarly Close implements Action...
...
宏來運行所有的動作。
public class Macro {
private final List<Action> actions;
public Macro() {
actions = new ArrayList<>();
}
public void record(Action action) {
actions.add(action);
}
public void run() {
actions.forEach(Action::perform);
}
}
現在運行宏是interesing部分的地方。
public class RunMacro {
public static void main(String[] args) {
Editor editor= new MyEditor();
Macro macro = new Macro();
macro.record(() -> editor.open());// Line 4
macro.record(new Close(editor)); // Line 5
macro.run();
}
}
我的問題是,4號線的運行,如何Java的理解,創造一個instanceof
打開,並將其添加到宏中。簡而言之,lamdba表達式的行爲與第5行的行爲相同。整個模式通過lambda表達式變得更簡單但是使用OOPS進行函數式編程是否使開發處於非常抽象的級別或不太冗長?
禮貌的問題:O'Reilly Media公司:Java的8個Lamdbas
可以在任何一個請澄清這一點?
是啊!這是我正在尋找的,謝謝(: – chaosguru 2014-09-24 08:07:30
謝謝(:這是更多的聲明方式 – chaosguru 2014-09-24 08:17:21
)對,我真的很喜歡方法引用和java 8引入了很多偉大的東西,沒有失去它的簡單性更大的java版本 – gontard 2014-09-24 08:20:10