Zaujíma ťa, aké zmeny sa udiali v Java 10 a 11? Čítaj článok a všetko podstatné sa dozvieš.
Java 10
Var
Od verzie 10 je dostupná možnosť nešpecifikovať typy premenných pre lokálne premenné, ak ich vie kompilátor zistiť z pravej strany. Namiesto napísania typu stačí napísať nešpecifikovaný typ a to var.
var list = new ArrayList<String>();
Kompilátor vie zistiť, akého typu je list a teda nie je možné pridávať čísla do listu, ale iba String.
var list = new ArrayList<String>();
list.add("Jaro");
Var sa neberie ako kľúčové slovo, ale ako nešpecifikovaný typ. Teda nemôžeme vytvoriť triedy s názvom var, ale je možné vytvoriť metódu s názvom var.
//error
String return(){
return "";
}
//ok
String var(){
return "";
}
Nová metóda na kolekciách
Pri kolekciách pribudla metóda copyOf, ktorá skopíruje jednu kolekciu do druhej.
List<String> list = List.of("Jaro", "Fero", "Duro");
Set<String> set = Set.copyOf(list);
List<String> listCopy = List.copyOf(set);
Map<Integer,String> map = Map.of(1,"Jaro",2,"Fero");
Map<Integer,String> map2 = Map.copyOf(map);
Java 11
Var v lambda výrazoch
Lambda výrazy podporujú type inferenciu, čo znamená, že ak používaš premennú v lambda výraze, tak java kompilátor vie zistiť, akého je typu a nemusíme typ zadefinovať.
list.stream()
.map(s -> s.toLowerCase()+".")
.collect(Collectors.toList());
V predchádzajúcich verziách javy sme nedokázali písať anotácie k premenným vo vnútri lambda výrazu, ktoré nemali zadefinovaný typ. Od verzie 11 je to možné, skoro – nemusíme zadefinovať špecifický typ, stačí ak napíšeme var.
list = list.stream()
.map((@Notnull var s) -> s.toLowerCase()+".")
.collect(Collectors.toList());
Jednoduchšie spustenie programu
Ak si napíšeš jednoduchý program a chceš ho spustiť v konzole, tak ho musíš najprv skompilovať cez príkaz javac a potom spustiť cez príkaz java.
Teraz stačí, keď rovno spustíš .java súbor pomocou java príkazu. Stane sa to, že sa automaticky súbor skompiluje a spustí.
java Main.java
java.lang.String metódy
V triede String pribudli nové metódy.
isBlank() – vracia true, pokiaľ je reťazec prázdny alebo obsahuje len biele znaky
lines() – zo Stringu sa vráti stream riadkov – ak stream obsahuje oddeľovače riadkov
java.util.function.Predicate not
Predstavme si takýto kód:
lines.stream()
.filter(s -> !s.isBlank())
Pomocou Predicate.not vyzerá krajšie a čitateľnejšie:
list.stream()
.filter(Predicate.not(s -> s.isBlank()));
S výhodou použitia method referencie:
list.stream()
.filter(Predicate.not(String::isBlank));
Ak použijeme statický import:
list.stream()
.filter(not(String::isBlank));
Ak ťa zaujal článok a chcel by si sa dozvedieť viac, tak klikni na
moju stránku a presuň sa na to, čo ťa zaujíma. Programovanie, kurzy, videá zdarma a iné záležitosti. Klikaj na www.jaroslavbeno.sk