1. Anonymous class 특징
- inner class가 outer class의 참조값을 가지고 있는 것처럼, 익명 클래스의 인스턴스는 외부 클래스 인스턴스의 참조값을 가지고 있다.
- GC의 대상이 되고 익명 클래스 참조가 해제될 때, 외부 클래스 인스턴스의 참조도 같이 해제가 된다.
2. Anonymous class 단점
- 위의 특징 때문에 불필요한 메모리를 참조하여 메모리릭이 발생할 확률이 올라간다.
3. lambda 특징
- static field를 생성하여 작업을 진행하여 외부 클래스의 인스턴스의 참조값을 가지지 않는다.
- 그래서 메모리가 할당이 되고 작업이 끝나면 GC 대상이 되어 메모리 참조가 바로 해제가 된다.
4. lambda 장점
- 위의 특징 덕분에 불필요한 메모리를 참조하지 않아 메모리릭이 발생할 확률이 내려간다.
5. 결론
- 아마도 이러한 특징들 때문에 자바 8부터 함수형 프로그래밍을 도입했다고 생각한다.
- 코틀린을 많이 사용하는 이유가 함수형 프로그래밍을 적극 받아들이고 람다식으로 코드를 편하게 작성할 수 있다는 점이 매우 크다고 생각한다.
references
드미트리 제메로프 and 스베트라나 이사코바. Kotlin In Action, 에이콘, 2017
https://kotlinlang.org/docs/lambdas.html
https://meetup.toast.com/posts/186
https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
'JAVA' 카테고리의 다른 글
| final (0) | 2022.04.27 |
|---|---|
| static (0) | 2022.04.23 |
| nested class(중첩 클래스) (0) | 2022.04.23 |
| 절차지향과 객체지향의 차이점 (0) | 2022.04.23 |
| nested class (0) | 2022.04.20 |