🤍 전 강의 25% 할인 중 🤍
2024년 상반기를 돌아보고 하반기에도 함께 성장해요!인프런이 준비한 25% 할인 받으러 가기 >>
132만명의 커뮤니티!! 함께 토론해봐요.
(메인 클래스 부분 아래로 내려가지지 않아서 실행 결과를 여기에 먼저 올립니다 😅)참고로, 함수형 인터페이스를 사용할 때는 아래와 같이 함수 시그니처(함수 이름, 반환형, 파라미터 타입)만 동일하고 바디 부분은 달라도 정상적으로 실행이 되더군요.📋Reportable 인터페이스package practice; @FunctionalInterface public interface Reportable { void report(int time); // 신고 }📋Detectable 인터페이스package practice.detector; @FunctionalInterface public interface Detectable { String name = "감지자"; // 인터페이스도 필드를 가질 수 있음 void detect(); // 감지 }💻NormalReporter 클래스package practice; public class NormalReporter implements Reportable { @Override public void report(int time) { System.out.println(time + " 초 동안 일반 화재 신고를 진행합니다."); } }💻VideoReporter 클래스package practice; public class VideoReporter implements Reportable { @Override public void report(int time) { System.out.println("직전 " + time + "초 영상과 함께 신고를 진행합니다."); } }💻FireDetector 클래스package practice.detector; public class FireDetector implements Detectable{ @Override public void detect() { System.out.println("일반 성능으로 화재를 감지합니다."); } }💻AdvancedFireDetector 클래스package practice.detector; public class AdvancedFireDetector implements Detectable{ @Override public void detect() { System.out.println("향상된 성능으로 화재를 감지합니다."); } }💻메인 클래스package practice; import practice.detector.Detectable; public class practice { public static void main(String[] args) { //* 함수형 인터페이스 실행 Reportable reportableNormal = (time) -> System.out.println(time + " 초 동안 일반 화재 신고를 진행합니다."); Reportable reportableVideo = (time) -> System.out.println("직전 " + time + "초 영상과 함께 신고를 진행합니다."); Detectable detectableFire = () -> System.out.println("일반 성능으로 화재를 감지합니다."); Detectable detectableAdvancedFire = () -> System.out.println("향상된 성능으로 화재를 감지합니다."); reportbyNormalReporter(reportableNormal, 20); reportbyVideoReporter(reportableVideo, 10); detectbyFireDetector(detectableFire); detectbyAdvancedFireDetector(detectableAdvancedFire); } public static void reportbyNormalReporter(Reportable reporter, int time) { reporter.report(time); } public static void reportbyVideoReporter(Reportable reporter, int time) { reporter.report(time); } public static void detectbyFireDetector(Detectable detector) { detector.detect(); } public static void detectbyAdvancedFireDetector(Detectable detector) { detector.detect(); } }