티스토리 뷰
포스팅에 앞서 내용이 틀릴 수 있습니다.
해당 부분 지적 감사히 받습니다.
이전시간에는 중첩, 내부 클래스에 대해 배웠다.
원래 익명클래스도 한 번에 다뤘어야 했는데, 피곤해서 나눴다.
익명클래스는 지역 클래스의 종류이다.
근데 이름이 없다.
그래서 생성할 때 딱 한 번만 해당 클래스의 인스턴스를 만들 수 있다.
그리고 선언과 동시에 내부를 구현한다.
또 기본생성자만 가지며 반드시 부모클래스 혹은 인터페이스가 있어야 만들 수 있다.
코드예제를 보자.
인터페이스
public interface Printer {
void print();
}
익명 클래스
Printer printer = new Printer() {
int value = 0;
@Override
public void print() {
System.out.println("value=" + value);
//인스턴스는 지역 변수보다 더 오래 살아남는다.
System.out.println("localVar=" + localVar);
System.out.println("paramVar=" + paramVar);
System.out.println("outInstanceVar=" + outInstanceVar);
}
};
printer.print();
코드에서 보다시피 Printer 타입의 printer의 인스턴스를 구현함과 동시에 클래스 내용을 중괄호 사이에 입력하였다.
익명클래스는 인터페이스를 구현하였으며, 메서드 오버라이딩까지 진행한 것을 볼 수 있다.
맨 아래 printer.print()를 통해 바로 접근할 수 있다.
다만 같은 내용의 익명클래스를 여러 번 생성해야 하거나, 내용이 너무 복잡한 경우에는 그냥 지역 클래스로 생성하는 것이 맞다.
아래 코드로 람다에 대해 간단히만 알아보자.
지금은 깊게 다루지 않을 거 기에 구두 설명만 하고 넘어가겠다.
public static void hello(Process process) {
System.out.println("프로그램 시작");
//코드 조각 시작
process.run();
//코드 조각 종료
System.out.println("프로그램 종료");
}
public static void main(String[] args) {
hello(() ->{
int randomValue = new Random().nextInt(6) + 1;
System.out.println("주사위 = " + randomValue) });
hello(()-> {
for (int i = 0; i < 3; i++) {
System.out.println("i = " + i);
}});
}
위 hello() 메서드를 보면 Process 인터페이스를 매개변수로 받는다.
그리고 인터페이스 Process에는 run()이라는 추상 메서드가 선언되어 있다.
즉 main에서는 hello()를 실행하며 Process 타입의 인스턴스 참조값을 넘겨주고 있는 것과 같다.
사실 이건 익명 클래스를 넘겨주는 것인데, 람다식이라고 자바 8 버전 이후부터, 클래스를 선언하는 잡다한 부분을 제외하고, 기능을 하는 메서드만 넘겨줄 수 있게 패치되었다.
그래서 매개변수로 인터페이스를 넘겨주는데 이안에 메서드만 쓸 수도 있구나~ 정도만 지금은 알아두자.
다음엔 예외처리에 대해 배워보자.
강의가 길고 개발건 테스트 때문에, 며칠 공백이 생길 수도 있다.
'기술스택 > 자바(Spring)' 카테고리의 다른 글
자바 제네릭(Generic) (0) | 2025.02.22 |
---|---|
자바 예외처리(Exception) (2) | 2025.02.20 |
자바 중첩 클래스, 내부 클래스 (2) | 2025.02.17 |
자바 타입 안전 열거형 + Enum (1) | 2025.02.16 |
자바 래퍼 클래스 (Wrapper Class) (1) | 2025.02.15 |
- Total
- Today
- Yesterday
- Los
- java
- static
- los 15
- 코딩테스트 준비
- lord of sql
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- samron
- webhacking.kr
- 상품을 구매한 회원 비율 구하기 파이썬
- spring
- 기술스택
- 스프링
- 프로그래머스
- 김영한 실전 자바 기본
- 백준 피보나치 수열
- 백준 피보나치
- 프로그래머스 상품을 구매한 회원 비율 구하기
- ys.k
- 코딩테스트
- 김영한
- 김영한 실전 자바 중급
- samron3
- extends
- 김영한 실전 자바 기초
- 자바
- los 15단계
- zixem
- 상속
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |