JAVA/JAVA8

Consumer Functional Interface

최-코드 2024. 8. 13. 13:49
  • 하나의 인자를 받고 리턴 타입이 없는 accept함수가 있다.
  • accept함수나 foreach, andThen에 대해서 자세히 보려면 메소드 참고
public class ConsumerExample {

    public static void main(String[] args){
        List<Student> studentList = StudentDataBase.getAllStudents();

        Consumer<Student> printName = (student) -> System.out.println(student.getName());

        //foreach함수는 Consumer<>타입을 인자로 받고, 각 인자마다 accept함수를 실행한다.
        studentList.forEach(printName);

        Consumer<Student> printActivities = student -> System.out.println(student.getActivities());

        //.andThen을 통해 이어서 실행할 Consumer<>타입을 지정할 수 있다.
        studentList.forEach(printName.andThen(printActivities));

        printNameActivitiesUsingCondition();
    }

    public static void printNameActivitiesUsingCondition(){
        List<Student> studentList = StudentDataBase.getAllStudents();

        studentList.forEach(student -> {
            if(student.getGradeLevel() >= 3){
                System.out.println(student.getName()+": ");
                System.out.println(student.getActivities());
            }
        });
    }
}