SeouliteLab

[Java/자바] @FunctionalInterface - 함수형 인터페이스 예제와 활용 본문

프로그래밍

[Java/자바] @FunctionalInterface - 함수형 인터페이스 예제와 활용

Seoulite Lab 2024. 3. 13. 08:14

Java의 @FunctionalInterface는 단 하나의 추상 메서드를 가진 인터페이스로, 함수형 프로그래밍에서 사용됩니다. 이번에는 @FunctionalInterface의 예제 코드와 활용에 대해 살펴보겠습니다.

예제 1: 단순한 계산기 함수형 인터페이스

@FunctionalInterface
interface Calculator {
    int calculate(int a, int b);
}

public class Main {
    public static void main(String[] args) {
        Calculator adder = (a, b) -> a + b;
        System.out.println("Addition: " + adder.calculate(5, 3)); // 출력 결과: Addition: 8
    }
}

이 예제에서는 간단한 덧셈 계산을 수행하는 함수형 인터페이스인 Calculator를 정의하고 사용했습니다.

예제 2: 문자열을 가공하는 함수형 인터페이스

@FunctionalInterface
interface StringProcessor {
    String process(String input);
}

public class Main {
    public static void main(String[] args) {
        StringProcessor toUpperCase = input -> input.toUpperCase();
        System.out.println("Processed String: " + toUpperCase.process("hello")); // 출력 결과: Processed String: HELLO
    }
}

이 예제에서는 문자열을 대문자로 변환하는 함수형 인터페이스를 정의하고 사용했습니다.

예제 3: 리스트 요소의 합계를 구하는 함수형 인터페이스

@FunctionalInterface
interface ListProcessor {
    int process(List<Integer> list);
}

public class Main {
    public static void main(String[] args) {
        ListProcessor sumCalculator = list -> list.stream().mapToInt(Integer::intValue).sum();
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        System.out.println("Sum of numbers: " + sumCalculator.process(numbers)); // 출력 결과: Sum of numbers: 15
    }
}

이 예제에서는 리스트의 요소들의 합계를 구하는 함수형 인터페이스를 정의하고 사용했습니다.

예제 4: 파일을 처리하는 함수형 인터페이스

@FunctionalInterface
interface FileProcessor {
    void process(File file);
}

public class Main {
    public static void main(String[] args) {
        FileProcessor fileDeleter = file -> {
            if (file.delete()) {
                System.out.println("File deleted successfully: " + file.getName());
            } else {
                System.out.println("Failed to delete the file: " + file.getName());
            }
        };

        File testFile = new File("test.txt");
        fileDeleter.process(testFile);
    }
}

이 예제에서는 파일을 삭제하는 함수형 인터페이스를 정의하고 사용했습니다.

예제 5: 조건에 따라 문자열을 처리하는 함수형 인터페이스

@FunctionalInterface
interface StringProcessor {
    String process(String input);
}

public class Main {
    public static void main(String[] args) {
        StringProcessor stringProcessor = input -> {
            if (input.length() > 5) {
                return input.toUpperCase();
            } else {
                return input.toLowerCase();
            }
        };

        System.out.println("Processed String: " + stringProcessor.process("Java")); // 출력 결과: Processed String: java
        System.out.println("Processed String: " + stringProcessor.process("FunctionalInterface")); // 출력 결과: Processed String: FUNCTIONALINTERFACE
    }
}

이 예제에서는 문자열의 길이에 따라 대소문자로 변환하는 함수형 인터페이스를 정의하고 사용했습니다.

예제 6: 두 수의 차를 구하는 함수형 인터페이스

@FunctionalInterface
interface Calculator {
    int calculate(int a, int b);
}

public class Main {
    public static void main(String[] args) {
        Calculator subtractor = (a, b) -> a - b;
        System.out.println("Subtraction: " + subtractor.calculate(10, 5)); // 출력 결과: Subtraction: 5
    }
}

이 예제에서는 두 수의 차를 계산하는 함수형 인터페이스를 정의하고 사용했습니다.