안녕하세요 지난 시간에 배운 인터페이스(후반전)을 함수형 인터페이스로 만들어보았습니다.
331
작성한 질문수 61
(메인 클래스 부분 아래로 내려가지지 않아서 실행 결과를 여기에 먼저 올립니다 😅)
참고로, 함수형 인터페이스를 사용할 때는 아래와 같이 함수 시그니처(함수 이름, 반환형, 파라미터 타입)만 동일하고 바디 부분은 달라도 정상적으로 실행이 되더군요.
📋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();
}
}
답변 1
0
안녕하세요?
배운 내용을 복습하면서 직접 응용해보시는 것은 개발 공부에 매우 큰 도움이 됩니다. 함수형 인터페이스로 잘 구현해주셨는데 아마 연습하시는 과정에서 다른 클래스들도 더 이상 필요하지 않은데 남겨두신 것 같아서 코드를 다음과 같이 조금 간소화 하였습니다. 또한 Reportable 과 Detectable 을 받는 메소드는 2개면 충분할 것 같아서 나머지 2개는 삭제하고 메소드 이름을 변경해보았으니 참고 바랍니다 😊
@FunctionalInterface
public interface Reportable {
void report(int time); // 신고
}@FunctionalInterface
public interface Detectable {
void detect(); // 감지
}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("향상된 성능으로 화재를 감지합니다.");
reportbyReporter(reportableNormal, 20);
reportbyReporter(reportableVideo, 10);
detectbyDetector(detectableFire);
detectbyDetector(detectableAdvancedFire);
}
public static void reportbyReporter(Reportable reporter, int time) {
reporter.report(time);
}
public static void detectbyDetector(Detectable detector) {
detector.detect();
}
}실행 결과는 다음과 같습니다.
20 초 동안 일반 화재 신고를 진행합니다.
직전 10초 영상과 함께 신고를 진행합니다.
일반 성능으로 화재를 감지합니다.
향상된 성능으로 화재를 감지합니다.감사합니다.
자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?
1
146
2
static이 뭐였는지 기억이 안나요 ㅜㅜ
0
119
2
Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의
0
70
1
사고력 키우는 법이 어떤게 있나요?
0
93
2
getter setter
0
103
2
섹션9. 66 메소드 오버로딩 시 질문이 있습니다.
0
80
1
안녕하세요 갑자기 프로그램 에러가 떠서 안되네요
0
76
2
변수 이름짓는법
0
114
2
intelli J 실행오류
0
115
2
혹시 이건 수학적 사고가 부족한 걸까요?
0
152
2
영상이 재생이 안됩니다.
0
167
3
이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.
0
117
2
응용이 어렵습니다.
0
206
2
IntelliJ가 보이지 않습니다.
0
185
3
JDK 버전 문의
0
129
2
BlackBox 파일 내에서 메소드 정의
0
136
1
동기화
0
121
2
Iterator 문의
0
105
1
코드 순서 문의
0
142
1
클래스 메소드
0
149
2
Quiz_05 관련 질문드립니다 !
0
118
2
다운로드가 안됩니다
0
165
2
다형성
0
120
2
HashMap
0
80
2





