Commit 7cda91dc by Patryk Czarnik

lambdy - początek

parent 9dfd79d3
package p17_lambdy; package p17_lambdy;
/* Interfejs funkcyjny to taki, który ma jedną metodę anstrakcyjną
(czyli pozbawioną implementacji).
Wyrażenia lambda, które są zgodne z nagłówkiem tej metody,
mogą służyć do tworzenia obiektów zgodnych z tym interfejsem.
*/
public interface FunkcjaLiczbowa { public interface FunkcjaLiczbowa {
double oblicz(double arg); double oblicz(double arg);
String nazwa();
} }
...@@ -5,6 +5,21 @@ public class Program { ...@@ -5,6 +5,21 @@ public class Program {
ProstaFunkcjaKwadratowa kw1 = new ProstaFunkcjaKwadratowa(); ProstaFunkcjaKwadratowa kw1 = new ProstaFunkcjaKwadratowa();
FunkcjaLiczbowa kw2 = new ProstaFunkcjaKwadratowa(); FunkcjaLiczbowa kw2 = new ProstaFunkcjaKwadratowa();
System.out.println(kw1.oblicz(5)); System.out.println(kw1.oblicz(5));
System.out.println(kw2.oblicz(5)); System.out.println(kw2.oblicz(6));
System.out.println();
FunkcjaLiczbowa f3 = arg -> arg*arg;
System.out.println(f3.oblicz(7));
System.out.println("Obiekt f3: " + f3);
System.out.println("Klasa obiektu: " + f3.getClass().getName());
if(f3 instanceof FunkcjaLiczbowa) {
System.out.println("Tak, to jest ten typ.");
}
System.out.println();
FunkcjaLiczbowa f4 = x -> 10*x;
FunkcjaLiczbowa f5 = Math::sqrt;
System.out.println(f4.oblicz(9));
System.out.println(f5.oblicz(16));
} }
} }
...@@ -8,7 +8,6 @@ public class ProstaFunkcjaKwadratowa implements FunkcjaLiczbowa { ...@@ -8,7 +8,6 @@ public class ProstaFunkcjaKwadratowa implements FunkcjaLiczbowa {
return arg*arg; return arg*arg;
} }
@Override
public String nazwa() { public String nazwa() {
return "kwadrat"; return "kwadrat";
} }
......
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