A munkámból adódóan sok vállalatnál megfordulok és azt látom, hogy a legtöbb helyen még mindig csak a Java 6-os verzióját használják annak ellenére, hogy 2014 március óta már a Java SE 8 is elérhető. Habár a hivatalos roadmap szerint a Java SE 7 publikus frissítései csak 2015 áprilisig várhatóak, érdemes a legfontosabb újdonságokat megismerni, mert azok természetesen a Java SE 8 verzióban is használhatók. Ezekből feature-ökből gyűjtöttem most össze néhányat.
1. Numerikus literáloknál aláhúzásjel használata
Az aláhúzásjelek használatának a célja, hogy megkönnyítse a számok olvashatóságát.
2. String használata switch szerkezetben
A String equals() metódusával lesz kiértékelve a kifejezés. Érdemes tudni, hogy a Java compiler hatékonyabb bytekódot generál ebben az esetben, mintha az if-else szerkezetet használnánk!
3. Erőforrások automatikus lezárása (try-with-resource)
Az erőforrások automatikusan lezárásra kerülnek, ha a try-with-resource szerkezetben, AutoCloseable vagy a Closeable interfészt implementáló osztályokat használunk.
4. Multi Catch
A kód duplikáció elkerülése miatt hasznos, amikor ugyanazt a kivétel lekezelő műveletet szeretnénk használni unrelated kivételek esetén, anélkül hogy a közös ősüket kellene elkapnunk.
5. Precise ReThrow
Nem kapunk fordítási hibát annak ellenére, hogy a kivétel lekezelő ágban feldobott e objektum általánosabb, mint a throws-nál deklarált FileNotFoundException, mivel a fordító képes meghatározni, hogy a kivétel aktuális típusa ebben az esetben FileNotFoundException lesz.
6. Diamond operátor használata
Az olvashatóság megkönnyítése érdekében, a jobb oldalról elhagyhatjuk a generikus típus paramétereket a <> operátor kiírásával.
Az aláhúzásjelek használatának a célja, hogy megkönnyítse a számok olvashatóságát.
class Numbers { public static void main(String args[]) { int i = 1_000_000; long m = 9_999_999_999_999L; double pi = 3.14_15; } }
2. String használata switch szerkezetben
A String equals() metódusával lesz kiértékelve a kifejezés. Érdemes tudni, hogy a Java compiler hatékonyabb bytekódot generál ebben az esetben, mintha az if-else szerkezetet használnánk!
class StringSwitch { public static void main(String args[]) { String fruit = "apple"; switch (fruit) { case "orange": System.out.println("orange"); break; case "apple": System.out.println("apple"); break; case "banana": System.out.println("banana"); break; } } }
3. Erőforrások automatikus lezárása (try-with-resource)
Az erőforrások automatikusan lezárásra kerülnek, ha a try-with-resource szerkezetben, AutoCloseable vagy a Closeable interfészt implementáló osztályokat használunk.
import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; class TryWithResousrce { public static void main(String args[]) throws IOException { try (BufferedReader br = new BufferedReader( new FileReader("c:/temp/myfile.txt")); PrintWriter pw = new PrintWriter( new FileWriter("c:/temp/myfile.txt"))) { pw.println("mytext"); pw.flush(); System.out.println(br.readLine()); } } }
4. Multi Catch
A kód duplikáció elkerülése miatt hasznos, amikor ugyanazt a kivétel lekezelő műveletet szeretnénk használni unrelated kivételek esetén, anélkül hogy a közös ősüket kellene elkapnunk.
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; class MultiCatch { public static void main(String args[]) { try { BufferedReader br = new BufferedReader(new FileReader("myfile.txt")); Connection con = DriverManager .getConnection("jdbc:postgresql://myhost/db","u","p"); } catch (IOException | SQLException ce) { //handle exceptions } } }
5. Precise ReThrow
Nem kapunk fordítási hibát annak ellenére, hogy a kivétel lekezelő ágban feldobott e objektum általánosabb, mint a throws-nál deklarált FileNotFoundException, mivel a fordító képes meghatározni, hogy a kivétel aktuális típusa ebben az esetben FileNotFoundException lesz.
import java.io.FileNotFoundException; public class PreciseReThrow { public static void main(String args[]) throws FileNotFoundException { try { throw new FileNotFoundException(); } catch (Exception e) { throw e; } } }
6. Diamond operátor használata
Az olvashatóság megkönnyítése érdekében, a jobb oldalról elhagyhatjuk a generikus típus paramétereket a <> operátor kiírásával.
import java.util.ArrayList; import java.util.List; import java.util.Map; public class DiamondUsage { public static void main(String args[]) { List<String> list1 = new ArrayList<>(); List<Map<Integer,List<Double>>> list2 = new ArrayList<>(); } }Persze a lista koránt sem teljes, érdemes még megismerni a NIO 2, a Concurrency API és a JDBC 4.1 újdonságait is mert hasznosak lehetnek a munkánk során és az 1Z0-804 vizsgán is kérdezhetik! .)
Nincsenek megjegyzések:
Megjegyzés küldése
Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.