Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
PublisertPatrik Eliassen Endret for 9 år siden
1
www.steria.no 16.07.20141 Den perfekte julegaven til Javakoden din Johannes Brodwall Steria
2
www.steria.no 16.07.20142 Wednesday, November 18th, Mark Reinhold from Sun announced that it was time for closures in Java.
3
www.steria.no 16.07.20143 This came as a surprise to everyone, but what was announced?
4
www.steria.no 16.07.20144 Hvorfor closures? Bygg bedre bibliotek.
5
www.steria.no 16.07.20145 Eksempel: Lese alle linjer i fil
6
www.steria.no 16.07.20146 void theOldWay(String[] args) throws IOException { BufferedReader reader = null; boolean done = false; try { FileReader filerdr = new FileReader(new File(args[0])) reader = new BufferedReader(fdr); String line; while ( (line = reader.readLine()) != null) { System.out.println("This is a line:" + line); } done = true; } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { if (done) throw e; } } }
7
www.steria.no 16.07.20147 Er dette rettferdig?
8
www.steria.no 16.07.20148 void theNewWay(String fname) throws IOException { forEachLine( new File( fname), #(String line) { System.out.println("This is a line:" + line); }); }
9
www.steria.no 16.07.20149 void theNewWay(String[] args) throws IOException { forEachLine( new File( args[0]), #(String line) { System.out.println("This is a line:"+line); }); }
10
www.steria.no 16.07.201410 Å bygge en funksjon som tar closures
11
www.steria.no 16.07.201411 public interface LineCallback { public void doForLine(String line) throws IOException; } public static void forEachLine(File file, final LineCallback lineCallback) throws IOException { doWithFile(file, #(Reader reader) { // … lineCallback.doForLine(line); } }); }
12
www.steria.no 16.07.201412 Hva er greia med disse #’ene?
13
www.steria.no 16.07.201413 OriginClass origin = new OriginClass(); origin.setBar("bar on origin"); TargetClass target = new TargetClass(); mapField( origin, OriginClass#bar, target, TargetClass#foo); System.out.println(target.getFoo());
14
www.steria.no 16.07.201414 OriginClass origin = new OriginClass(); origin.setBar("bar on origin"); TargetClass target = new TargetClass(); mapField( origin, OriginClass#bar, target, TargetClass#foo); System.out.println(target.getFoo());
15
www.steria.no 16.07.201415 OriginClass#bar Person#setSalary(int) #(String line) { System.out.println("This is a line:" + line); }
16
www.steria.no 16.07.201416 Fem ting du bør bruke closures til
17
www.steria.no 16.07.201417 Hva gjør vi for å komme rundt et dårlig språk
18
www.steria.no 16.07.201418 Funksjoner som frigir ressurser Interne iteratorer Asynkrone kall Callbacks Queries
19
www.steria.no 16.07.201419 Closures lar oss bygge bedre bibliotek.
20
www.steria.no 16.07.201420 Her kan du lære mer: http://www.jroller.com/scolebourne/entry/closures_in_jdk_7 http://docs.google.com/View?docid=ddhp95vd_0f7mcns http://kijaro.dev.java.net/ (Implementasjon) http://kijaro.dev.java.net/ http://svn.brodwall.com/presentations/public/2009-12-05-closures-javabin http://johannesbrodwall.com/2008/03/05/quality-code-starts-with-the-details-of- the-language/ http://johannesbrodwall.com/2008/03/05/quality-code-starts-with-the-details-of- the-language/
21
www.steria.no Johannes Brodwall Chief Scientist Steria, Norway johannes.brodwall@steria.no http://johannesbrodwall.com Twitter: @jhannes Takk for oppmerksomheten www.steria.no
Liknende presentasjoner
© 2024 SlidePlayer.no Inc.
All rights reserved.