Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
themeEclipse
languagejava
titleDirekte implementasjon
DoubleValueComputer adder = new DoubleValueComputer() {
    @Override
    public double compute(double x, double y) {
        return x + y;
    }
};
 
DoubleValueComputer multiplier = new DoubleValueComputer() {
    @Override
    public double compute(double x, double y) {
        return x * y;
    }
};
 
 
Code Block
themeEclipse
languagejava
titleMed lambda
DoubleValueComputer adder = (x, y) -> x + y;
DoubleValueComputer multiplier = (x, y) -> x * y;

 

Lambda-uttrykk

Den direkte implementasjonen over er på seks linjer, men det er kun linje fire som er interessant: Hva er det compute skal returnere? Resten av linjene er unødvendige, for vi vet dem fra før av – det samme står i definisjonen av grensesnittet. Vi vet at en implementasjon av DoubleValueComputer må ha en metode som heter compute, den må være public, den må ta to doubles som argumenter, og returnere en double. Lambda-operatoren (->) lar oss forenkle dette. Til venstre for pila står argumentene (dersom det er flere, eller ingen, må de omsluttes med parentes og separeres med komma), og til høyre for pila står hva som skal returneres. Merk at dette fungerer kun for funksjonelle grensesnitt, for ellers vil ikke lambda-operatoren vite hvilken metode som skal implementeres.

...