Nézzük meg, hogy a Java 8 előtt milyen lehetőségünk egy swinges JButton-ra egy ActionListenert raknunk.
Most vessünk egy pillantást a Java 8 legnagyobb újítására, a lambda-kifejezésekre. Az előző példa lambda-kifejezésekkel a következőképpen néz ki:
Ahelyett, hogy egy interfész implementációt adnánk át az addActionListener metódusnak, semmi ilyet nem teszünk, helyette egy kódrészletet adunk át neki. A lambda-kifejezés bal oldala a metódusnak a paramétere (a paraméter neve mindegy, hogy mi). A jobb oldal pedig az a kód, amit a Java lefuttat, ha bekövetkezik az adott esemény.
A másik nagyon fontos dolog, - amit már egyébként láthattunk a Java 7 esetében - az a típus kikövetkeztetés (type inference). A példában látható, hogy a kifejezés bal oldalára nem írtam típust, ez a type inference miatt van.
Vegyünk egy új példát. Az ismeretlen metódusok ne tévesszenek meg senkit, a későbbiekben bemutatásra fognak kerülni.
A példában veszünk egy listát ami számokkal van feltöltve. Ezután a számértékeket stringként akarjuk használni egy új listában. A lényegi rész a metódusreferenciákra vonatkozóan a következő:
Itt jönnek be a metódusreferencia használata. Mennyivel olvashatóbb lenne, ha olyan szintaxisban nézne ki az i.toString() hívás, hogy tudjuk milyen osztály, milyen metódusát hívjuk.
A metódusreferencia szintaxisa a következőképpen néz ki:
Az előző példa metódusreferenciával:
Van néhány beépített metódusnév is, ilyen például a new. Ha egy olyan metódusreferenciát akarunk átadni, ami létrehoz egy új objektumot, akkor írhatjuk a következőt: