Commit 6135259d by Patryk Czarnik

Interfejs funkcyjny

parent edd2f93f
package p25_lambdy;
/* Interfejs funkcyjny to taki, w którym jest dokładnie jedna metoda wymagająca implementacji.
Przed takim interfejsem można, ale nie trzeba, umieścić adnotację @FunctionalInterface
*/
public interface FunkcjaLiczbowa {
double oblicz(double x);
}
package p25_lambdy;
public class NaszaImplementacjaInterfejsu implements FunkcjaLiczbowa {
@Override
public double oblicz(double x) {
return x*x;
}
}
package p25_lambdy;
public class Przyklady {
public static void main(String[] args) {
double wynik;
// Aby utworzyć obiekt, który jest zgodny z interfejsem, można
// - od zawsze - stworzyć oddzielną klasę, które implementuje interfejs, a następnie obiekt tej klasy
FunkcjaLiczbowa f1 = new NaszaImplementacjaInterfejsu();
wynik = f1.oblicz(11);
System.out.println(wynik);
// - od Javy 1.2 - użyć notacji "klasa anonimowa"
FunkcjaLiczbowa f2 = new FunkcjaLiczbowa() {
public double oblicz(double x) {
return x*x;
}
};
wynik = f2.oblicz(2);
System.out.println(wynik);
// - od Javy 8 - użyć wyrażenia lambda
FunkcjaLiczbowa f3 = x -> x*x;
wynik = f3.oblicz(3);
System.out.println(wynik);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment