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();
|
||||
Controller c1 = new Controller(obai, omar, view);
|
||||
c1.setKarten();
|
||||
c1.setfigurenkarten();
|
||||
while(true) {
|
||||
c1.werfeEineKarte(obai);
|
||||
c1.werfeEineKarte(omar);
|
||||
|
|
Loading…
Reference in New Issue