해결된 질문
작성
·
110
·
수정됨
0
[질문 내용]
안녕하세요, 영상에서 영한님이 "메서드를 전달"하라고 하시기에 다음과 같이 풀어봤는데, 영한님 풀이와는 접근 방법이 조금 다른 것 같아 문의드립니다.
제가 봤을 때는 영한님 풀이의 경우 "메서드를 전달"한다는 느낌보다는 "메서드를 구현해놓은 인스턴스를 전달"한다는 느낌으로 받아들여져서 질문드립니다.
다음과 같이 풀이해도 익명 클래스의 목적에 부합하는 풀이일까요?
추가로 강의록에 "그런데 지금까지 학습한 내용으로는 메서드를 전달할 수 있는 방법이 없다."라고 언급되었는데 이는 결국 "(아직 학습하지 않았지만) 메서드를 전달할 수 있는 방법이 존재한다."라고 해석되고, 이에 해당하는 방법이 아래 풀이와 같은 방법인지 궁금합니다.
// my solution-2
package nested.anonymous.ex;
import nested.local.Process;
import java.util.Random;
public class Ex1RefMainSOL2 {
public void process(Process process) {
System.out.println("프로그램 시작");
process.run();
System.out.println("프로그램 종료");
}
public static void main(String[] args) {
Ex1RefMainSOL2 main = new Ex1RefMainSOL2();
main.process(new Process() {
int randomValue = new Random().nextInt(6) + 1;
@Override
public void run() {
System.out.println("주사위 = " + randomValue);
}
});
main.process(new Process() {
@Override
public void run() {
for (int i = 1; i <= 3; i++) {
System.out.println("i = " + i);
}
}
});
}
}
답변 1
0
다음 영상 보니 바로 이에 대한 풀이가 있어서 혹시 저와 같은 의문 가지실 분들을 위해 댓글 남깁니다.
다음 강의인 익명 클래스 활용3의 Ex1RefMainV4 문제(영상 3분 부분)를 확인하시면 됩니다.
++
위 코드도 "메서드만 전달"한 것은 아님.
"인스턴스를 넘긴 것이지만, 그 참조가 남아있지 않게 넘긴 것"뿐임.
"메서드만 전달"하는 방식은 다음 강의의 lambda 부분(영상 5분 40초) 참고