Lambda
parent
8b37461b71
commit
bf27079e24
|
@ -0,0 +1,31 @@
|
||||||
|
package Lambda;
|
||||||
|
|
||||||
|
public interface Lambda {
|
||||||
|
// Lambda-Ausdruck: Kurzform für anonyme Klassenimplementierung
|
||||||
|
// - Wird verwendet, um Methoden schnell zu überschreiben
|
||||||
|
// - Syntax: (Parameter) -> { Methodenkörper; }
|
||||||
|
|
||||||
|
// - wenn die methode nur einen Parameter hat, können die Klammern weglassen werden
|
||||||
|
|
||||||
|
// Funktionale Schnittstelle: Eine Schnittstelle, die genau eine abstrakte Methode enthält
|
||||||
|
// - Lambdas können nur mit funktionalen Schnittstellen verwendet werden
|
||||||
|
// - Beispiel: Runnable (enthält nur die Methode run())
|
||||||
|
|
||||||
|
// Beispiel für eine funktionale Schnittstelle mit Lambda:
|
||||||
|
Runnable task = () -> System.out.println("Task läuft");
|
||||||
|
|
||||||
|
// Typ-Inferenz: Der Compiler kann oft den Typ der Parameter und Rückgabewerte aus dem Kontext ableiten
|
||||||
|
// - Beispiel: (int x) -> x * 2 kann auch als x -> x * 2 geschrieben werden
|
||||||
|
|
||||||
|
// Mögliche Fehlerquellen:
|
||||||
|
// - Lambda-Ausdrücke können nur mit Schnittstellen verwendet werden, die genau eine abstrakte Methode haben
|
||||||
|
// - Typische Probleme sind Mehrdeutigkeit bei der Typ-Inferenz und Schwierigkeiten bei der Fehlersuche in komplexen Lambdas
|
||||||
|
|
||||||
|
public void tueetwas(String name);
|
||||||
|
|
||||||
|
//public void x(int x);
|
||||||
|
/*
|
||||||
|
* in andere Klasse
|
||||||
|
* x -> x * 2
|
||||||
|
*/
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package Lambda;
|
||||||
|
|
||||||
|
public class Test {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Lambda normal = new Lambda() {
|
||||||
|
@Override
|
||||||
|
public void tueetwas(String name) {
|
||||||
|
System.out.println(name + " Hallo Welt");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
normal.tueetwas("Obai sagt: ");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* lambd Prinzip verweden:
|
||||||
|
* - () = Parameter der Methode
|
||||||
|
* - -> die implementierung der Methode
|
||||||
|
*/
|
||||||
|
//ohne klammern
|
||||||
|
//da nur ein parameter, können klammern weglassen werden
|
||||||
|
Lambda lambda = name -> System.out.println(name + " Hallo Lambda3213");
|
||||||
|
lambda.tueetwas("Obai sagt: ");
|
||||||
|
|
||||||
|
|
||||||
|
// mit klammern
|
||||||
|
Lambda lambda2 = name -> {
|
||||||
|
|
||||||
|
System.out.println("Hallo Lambda1");
|
||||||
|
System.out.println("Hallo Lambda2");
|
||||||
|
};
|
||||||
|
lambda2.tueetwas("Obai sagt: ");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package oop.ExceptionHandling;
|
||||||
|
|
||||||
|
public class MyException extends RuntimeException {
|
||||||
|
// extends RuntimeException ist unchecked, also benötigt man kein throws
|
||||||
|
// extend Exception int checke, also benötigt man throws in der methode
|
||||||
|
// z.b public static void num ( int number) throws MyException
|
||||||
|
MyException(String message){
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void num ( int number) {
|
||||||
|
if (number <= 0) {
|
||||||
|
MyException ae = new MyException("Die zahl soll großer als 0");
|
||||||
|
throw ae;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
try {
|
||||||
|
num(-1);
|
||||||
|
|
||||||
|
}catch(MyException ae) {
|
||||||
|
System.out.println(ae);
|
||||||
|
ae.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,7 +8,6 @@ public class Test {
|
||||||
View view = new View();
|
View view = new View();
|
||||||
Controller c1 = new Controller(obai, omar, view);
|
Controller c1 = new Controller(obai, omar, view);
|
||||||
c1.setKarten();
|
c1.setKarten();
|
||||||
c1.setfigurenkarten();
|
|
||||||
while(true) {
|
while(true) {
|
||||||
c1.werfeEineKarte(obai);
|
c1.werfeEineKarte(obai);
|
||||||
c1.werfeEineKarte(omar);
|
c1.werfeEineKarte(omar);
|
||||||
|
|
Loading…
Reference in New Issue