Wie können Abschlüsse in Java API -Design ermöglichen, das Sprachdesign zu ersetzen?

StackOverflow https://stackoverflow.com/questions/4764539

  •  16-10-2019
  •  | 
  •  

Frage

Ich kann einige der Vorteile von Schließungen sehen, wie sie, wie sie ihren Platz haben können, um bestehende Bibliotheken zu vereinfachen und ein zukünftiges Design einfacher und effizienter zu gestalten.

Einer der wichtigsten Punkte, die im Entwurfsvorschlag (http://www.javac.info/consensus-closures-jsr.html) erwähnt werden, befindet sich jedoch in Abschnitt 2.5, Punkt E:

(Die Spezifikation verbessert die Sprache nach)

e) Aktivieren Sie das zukünftige API -Design, um das Sprachdesign für die Erweiterung der Java -Plattform zu ersetzen.

Ich habe Mühe zu sehen, wie dies der Fall ist. Sicherlich ist Sprachdesign genau das - das Design der Sprache selbst und kann nicht durch eine API ersetzt werden (Was ich sehr bezweifle, wird passieren.)

Kann jemand etwas beleuchten und vielleicht ein Beispiel für etwas geben, das zuvor eine Sprachänderung erforderte, aber mit der Hinzufügung von Schließungen nicht mehr erforderlich ist?

War es hilfreich?

Lösung

API -Design- und Sprachmerkmale sind an einigen Stellen definitiv austauschbar. Schauen Sie sich einfach das synchronisierte Schlüsselwort in Java an. Es ist ein Schlüsselwort, könnte aber genauso gut als API implementiert werden, wenn die Sprache ausreichend nonverbose war. Anmerkungen sind ein weiteres Beispiel. Der andere Weg um eine @Stateless Annotation, die alle Methoden in einem Klassentransaktional herstellt, könnte auch ein Sprachschlüsselwort gewesen sein.

Insbesondere Verschlüsse machen es einfach, einen "Codeblock" einer Methode zu übergeben, die dann etwas damit tun könnte.

Ein rohes Beispiel für jeden könnte gemacht werden:

for_each(myFooList, #(Foo foo) { 
   String something = foo.getBar() + foo.getKaz();
   System.out.println(something);
});

Vielleicht nicht 100% so sauber wie die für jede Schleife, die direkt von der Syntax der Sprache unterstützt wird, aber er ermöglicht es jedem, leicht mit sprachähnlichen Verbesserungen zu erfahren.

Andere Tipps

Für alle, die den Entwurfsvorschlag nicht gelesen haben, finden Sie hier ein wenig mehr Details aus später im selben Dokument:

Die Zugabe von Schließungen vereinfacht die Entwicklung der Java -Plattform. Viele vorhandene Sprach -RFEs in der öffentlichen Fehlerdatenbank von Sun können als API -Anfragen für eine Retargetation zurückzuführen sein Methoden, die Schließungen erhalten. Viele zukünftige Bedürfnisse für zusätzliche Statementformulare können stattdessen durch die Hinzufügung von Bibliotheksmethoden erfüllt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top