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 인터페이스의 역할을 람다식으로 대체