람다, 내부클래스, 익명클래스 - 실습(4)

말하는 감자·2025년 1월 8일
0
post-thumbnail

Code

import java.util.ArrayList;
import java.util.List;

public class CarExam2 {
    public static void main(String[] args) {
        List<Car2> cars = new ArrayList<>();
        cars.add( new Car2("작은차",2,800,3) );
        cars.add( new Car2("봉고차",12,1500,8) );
        cars.add( new Car2("중간차",5,2200,0) );
        cars.add( new Car2("비싼차",5,3500,1) );

        printCar(cars, new CheckCar(){
            public boolean test(Car2 car){
                return car.capacity>=4 && car.price<2500;
            }
                });
    }
    interface CheckCar{
        boolean test(Car2 car);
    }
    public static void printCar(List<Car2> cars,CheckCar tester) {
        for(Car2 car:cars){
            if(tester.test(car)){
                System.out.println(car);
            }
        }
    }

}

람다식으로 변환


import java.util.*;
public class CarExam{
    public static void main(String[] args){
        List<Car> cars = new ArrayList<>();
        cars.add( new Car("작은차",2,800,3) );
        cars.add( new Car("봉고차",12,1500,8) );
        cars.add( new Car("중간차",5,2200,0) );
        cars.add( new Car("비싼차",5,3500,1) );
        
        printCar(cars, car -> car.capacity >= 4 && car.price < 2500);

    }
    
    public static void printCar(List<Car> cars, CheckCar tester){
        for(Car car : cars){
            if (tester.test(car)) {
                System.out.println(car);
            }
        }
    }
    
    interface CheckCar{
        boolean test(Car car);
    }  
}
  • CheckCar 인터페이스의 역할을 람다식으로 대체
profile
주니어개발자(?)

0개의 댓글