Ich habe gerade versucht, als Übung einen Lambdaausdruck zu implementieren, was mir nicht gelungen ist, ich weiß aber ledier nicht weshalb.
Hier ist meine Mainmethode, alles ist in den Kommentaren erklärt:
Der Tester, den ich als argument der Methode evaluate übergebe, implementiert das Interface Tester:
Hier ist die Implementierung – vereinfachend gebe ich mal immer einfach “true” zurück.
Nun aber zur Methode evaluate in meiner Mainklasse. Bei
...heißt es: Tester cannot be resolved to a variable. Ich weiß aber nicht, woran dies liegt. Ich habe eaber jre8 erfolgreich installiert :\
Hier ist meine Mainmethode, alles ist in den Kommentaren erklärt:
Code:
package core; import java.util.ArrayList; import java.util.List; import core.Person.Sex; public class Main { public static void evaluate(List<Person> list, Tester tester) { for(Person p : list){ if(Tester tifc = (p.getName(), p.getAge(), p.getGender(), p.get) -> {}){ System.out.println(p.printPerson()); } } } /** * @param args */ public static void main(String[] args) { //Ich erstelle hier eine Liste von Personen und alle Personen bekommen auch Eigenschaften gesetzt. List<Person> list = new ArrayList<>(); Person p1 = new Person(); p1.setName("hapax"); p1.setBirthday(1982,5,23); p1.setGender(Sex.MALE); p1.setEmailAddress("[email protected]"); list.add(p1); Person p2 = new Person(); p2.setName("balla"); p2.setBirthday(1991,5,23); p2.setGender(Sex.MALE); p2.setEmailAddress("[email protected]"); list.add(p2); Person p3 = new Person(); p3.setName("hapaxo"); p3.setBirthday(2000,5,23); p3.setGender(Sex.MALE); p3.setEmailAddress("[email protected]"); list.add(p3); ///////////////////////////////////////////////// //Ich habe hier eine Methode evaluate, die bekommt als Argumente die Liste und einen Tester evaluate(list, new TesterAgeGender()); } }
Der Tester, den ich als argument der Methode evaluate übergebe, implementiert das Interface Tester:
Code:
package core; import java.util.Date; public interface Tester { public boolean test(String name, Date age, Person.Sex sex, String emailAddress); }
Hier ist die Implementierung – vereinfachend gebe ich mal immer einfach “true” zurück.
Code:
package core; import java.util.Date; public class TesterAgeGender implements Tester{ @Override public boolean test(String name, Date age, Person.Sex sex, String emailAddress){ return true; } }
Nun aber zur Methode evaluate in meiner Mainklasse. Bei
Code:
if(Tester tifc = (p.getName(), p.getAge(), p.getGender(), p.get) -> {}){ v
Comment