Blog

Java 10 a 11 – vybrané programátorské zmeny

Learn2Code tím - 22.05.2019 - Tipy a triky

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


Logo facebook

Learn2Code tím

Učíme ľudí dizajnovať, robiť webstránky a programovať. Naše prezenčné kurzy nájdeš vo viacerých mestách na Slovensku a pomocou online kurzov sa môžeš vzdelávať z pohodlia domova.


Kontingenčné tabuľky, I.časť – Vytvorenie kontingenčnej tabuľky

Tipy a triky

Kontingenčná tabuľka – vytvorenie, polia kontingenčnej tabuľky Kontingenčné tabuľky. Stačí spomenúť toto slovné spojenie a ľudia automaticky začínajú...

Najvhodnejší software na editáciu videa (časť I.)

Tipy a triky

Vieme, že v ponuke dostupných softvérov je niekedy ťažké sa orientovať a vybrať si ten, ktorý bude našim potrebám vyhovovať najviac. Táto dilema...

Java najnovšie verzie (Java 9): príkazový riadok JShell (2. časť)

Tipy a triky

Java príkazový riadok JShell Command Line je nástroj, kde môžeme skúšať spúšťať kód bez toho, aby sme museli vytvoriť novú triedu s main...