강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

dev.rudevico님의 프로필 이미지
dev.rudevico

작성한 질문수

김영한의 실전 자바 - 중급 1편

익명 클래스 활용2

Ex1RefMainV1 질문

해결된 질문

작성

·

110

·

수정됨

0

[질문 내용]
안녕하세요, 영상에서 영한님이 "메서드를 전달"하라고 하시기에 다음과 같이 풀어봤는데, 영한님 풀이와는 접근 방법이 조금 다른 것 같아 문의드립니다.

제가 봤을 때는 영한님 풀이의 경우 "메서드를 전달"한다는 느낌보다는 "메서드를 구현해놓은 인스턴스를 전달"한다는 느낌으로 받아들여져서 질문드립니다.

  1. 다음과 같이 풀이해도 익명 클래스의 목적에 부합하는 풀이일까요?

  2. 추가로 강의록에 "그런데 지금까지 학습한 내용으로는 메서드를 전달할 수 있는 방법이 없다."라고 언급되었는데 이는 결국 "(아직 학습하지 않았지만) 메서드를 전달할 수 있는 방법이 존재한다."라고 해석되고, 이에 해당하는 방법이 아래 풀이와 같은 방법인지 궁금합니다.

 

// 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

dev.rudevico님의 프로필 이미지
dev.rudevico
질문자

다음 영상 보니 바로 이에 대한 풀이가 있어서 혹시 저와 같은 의문 가지실 분들을 위해 댓글 남깁니다.

다음 강의인 익명 클래스 활용3Ex1RefMainV4 문제(영상 3분 부분)를 확인하시면 됩니다.

 

dev.rudevico님의 프로필 이미지
dev.rudevico
질문자

++

위 코드도 "메서드만 전달"한 것은 아님.

"인스턴스를 넘긴 것이지만, 그 참조가 남아있지 않게 넘긴 것"뿐임.

"메서드만 전달"하는 방식은 다음 강의의 lambda 부분(영상 5분 40초) 참고

dev.rudevico님의 프로필 이미지
dev.rudevico

작성한 질문수

질문하기