Ich verstehe eine Sache nicht; nachdem ich den Versuch unternommen habe, ein Tutorial zu Lambdaausdrücken in JAVA zu machen,
https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
ich habe versucht, das nachzuprogrammieren, jedoch funktioniert folgender Code nicht, da sich das Interface nicht implementieren lässt (siehe Code-Kommentar). Ich verstehe leider nicht, was ich falsch gemacht habe, kann mir eventuell bitte jemand einen Tipp geben?
https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
ich habe versucht, das nachzuprogrammieren, jedoch funktioniert folgender Code nicht, da sich das Interface nicht implementieren lässt (siehe Code-Kommentar). Ich verstehe leider nicht, was ich falsch gemacht habe, kann mir eventuell bitte jemand einen Tipp geben?
Code:
package core;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import core.Person.Sex;
class Main {
public static void printTested(List<Person> roster,Tester tester) {
for (Person p : roster) {
if(tester:test(p)){
p.printPerson();
}
}
}
public static void main(String[] args) {
List<Person> roster = new ArrayList<>();
roster.add(new Person("Hannah",LocalDate.of(1980, 6, 30),Sex.FEMALE,"hannah@mail.se"));
Tester test=(p)->p.getAge()>=18;
//Hier sagt er immer: „Create local variable p!“
printTested(roster, test);
}
}
Code:
package core;
import static java.lang.System.out;
import java.time.LocalDate;
public class Person {
public enum Sex {
MALE, FEMALE
}
String name;
LocalDate birthday;
Sex gender;
String emailAddress;
public Person(String nam, LocalDate ldat, Sex s, String emailAddr) {
name=nam;
birthday=ldat;
gender=s;
emailAddress=emailAddr;
}
public int getAge() {
LocalDate dateBefore=birthday;
LocalDate dateAfter=LocalDate.now();
return (int) java.time.temporal.ChronoUnit.YEARS.between(dateBefore, dateAfter);
}
public void printPerson() {
out.println(name);
}
}
Code:
package core;
public interface Tester {
public boolean test(Person p);
}
Zuletzt bearbeitet: