작성
·
35
0
package chap_08.camera;
import chap_08.detector.AccidentDetector;
import chap_08.detector.Detectable;
import chap_08.reporter.Reportable;
import chap_08.reporter.VideoReporter;
public class SpeedCam extends Camera{
private Detectable detector;
private Reportable reporter;
public void setDetector(Detectable detector) {
this.detector = detector;
}
public void setReporter(Reportable reporter) {
this.reporter = reporter;
}
@Override
public void showMainFearture() {
System.out.println("속도 측정, 번호 인식");
}
public void detect(){
this.detector.detect();
}
public void report(){
this.reporter.report();
}
public void setDetector(AccidentDetector accidentDetector) {
}
public void setReporter(VideoReporter videoReporter) {
}
}
package chap_08;
import chap_08.camera.SpeedCam;
import chap_08.detector.AccidentDetector;
import chap_08.reporter.VideoReporter;
public class _Quiz_08 {
public static void main(String[] args) {
SpeedCam speedCam = new SpeedCam();
speedCam.setDetector(new AccidentDetector());
speedCam.setReporter(new VideoReporter());
speedCam.detect();
speedCam.report();
}
}
전부 다 강의 보면서 쳤는데 저렇게 에러가 떠서요. 뭐가 문제일까요?
답변 2
0
안녕하세요?
코드 하단에 보니 아마 자동으로 생성된 것으로 보이는 불필요한 메소드 2개가 추가되어 있네요. 이 둘을 없애면 올바로 동작할 거에요 😊
// 삭제해주세요
public void setDetector(AccidentDetector accidentDetector) {
}
public void setReporter(VideoReporter videoReporter) {
}
삭제 후에도 계속 문제가 된다면 다시 질문글 남겨주세요!
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 이승언님.
NullPointerException
은 Java에서 매우 흔한 오류로, 객체가 null
상태에서 그 객체의 메서드를 호출하거나 속성에 접근하려고 할 때 발생합니다. 제공된 코드와 에러 이미지를 바탕으로, 이 문제는 SpeedCam
클래스의 detector
혹은 reporter
객체가 초기화되지 않은 상태에서 detect()
또는 report()
메서드를 호출하려고 하기 때문에 발생한 것으로 보입니다.
이 문제를 해결하기 위한 몇 가지 방법을 제시 드리겠습니다.
setDetector()
및 setReporter()
메서드가 있습니다. 객체를 설정하기 위한 올바른 메서드를 사용했는지 확인하세요. 중복된 메서드를 제거하고 올바르게 정의된 메서드를 남겨두세요. public void setDetector(Detectable detector) {
this.detector = detector;
}
public void setReporter(Reportable reporter) {
this.reporter = reporter;
}
SpeedCam
객체 생성 이후 메서드 호출 전에 setDetector()
및 setReporter()
메서드가 제대로 호출되었는지 확인하세요.main()
메소드에서 다음과 같이 사용하고 있습니다.
SpeedCam speedCam = new SpeedCam();
speedCam.setDetector(new AccidentDetector());
speedCam.setReporter(new VideoReporter());
speedCam.detect();
speedCam.report();
이 부분은 올바르게 호출되고 있어야 합니다. 하지만 초기화되지 않았을 가능성을 염두에 두고 확인해 보세요.
이미지와 유사한 문제 상황을 다루고 있는 게시글이 있습니다. 아래 링크를 참고하여 문제를 해결하는 데 도움을 받을 수 있습니다.
이 게시물에서 다른 사용자들이 이와 유사한 문제를 해결한 사례를 확인하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.