Java Lambda Uitdrukkings
Java Lambda Uitdrukkings
Lambda-uitdrukkings is in Java 8 bygevoeg.
'n Lambda-uitdrukking is 'n kort blok kode wat parameters inneem en 'n waarde terugstuur. Lambda-uitdrukkings is soortgelyk aan metodes, maar hulle het nie 'n naam nodig nie en hulle kan reg in die liggaam van 'n metode geïmplementeer word.
Sintaksis
Die eenvoudigste lambda-uitdrukking bevat 'n enkele parameter en 'n uitdrukking:
parameter -> expression
Om meer as een parameter te gebruik, draai dit tussen hakies:
(parameter1, parameter2) -> expression
Uitdrukkings is beperk. Hulle moet onmiddellik 'n waarde terugstuur, en hulle kan nie veranderlikes, opdragte of stellings soos if
of bevat nie for
. Om meer komplekse bewerkings te doen, kan 'n kodeblok met krulhakies gebruik word. As die lambda-uitdrukking 'n waarde moet terugstuur, moet die kodeblok 'n return
stelling hê.
(parameter1, parameter2) -> { code block }
Gebruik Lambda-uitdrukkings
Lambda-uitdrukkings word gewoonlik as parameters na 'n funksie oorgedra:
Voorbeeld
Gebruik 'n lamba-uitdrukking in die ArrayList
se forEach()
metode om elke item in die lys te druk:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
numbers.forEach( (n) -> { System.out.println(n); } );
}
}
Lambda-uitdrukkings kan in veranderlikes gestoor word as die veranderlike se tipe 'n koppelvlak is wat slegs een metode het. Die lambda-uitdrukking moet dieselfde aantal parameters en dieselfde tipe terugkeer as daardie metode hê. Java het baie van hierdie soort koppelvlakke ingebou, soos die Consumer
koppelvlak (gevind in die java.util
pakket) wat deur lyste gebruik word.
Voorbeeld
Gebruik Java se Consumer
koppelvlak om 'n lambda-uitdrukking in 'n veranderlike te stoor:
import java.util.ArrayList;
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
Consumer<Integer> method = (n) -> { System.out.println(n); };
numbers.forEach( method );
}
}
Om 'n lambda-uitdrukking in 'n metode te gebruik, moet die metode 'n parameter hê met 'n enkelmetode-koppelvlak as sy tipe. Deur die koppelvlak se metode te roep, sal die lambda-uitdrukking uitgevoer word:
Voorbeeld
Skep 'n metode wat 'n lambda-uitdrukking as 'n parameter neem:
interface StringFunction { String run(String str);
}public class Main { public static void main(String[] args) { StringFunction exclaim = (s) -> s + "!"; StringFunction ask = (s) -> s + "?"; printFormatted("Hello", exclaim); printFormatted("Hello", ask);
}public static void printFormatted(String str, StringFunction format) { String result = format.run(str); System.out.println(result);
}}