1. collection val evens: List = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) .filter { it % 2 == 0 } 코를린에서 처음 이런 코드를 봤을때 아무 생각없이 난 이렇게 생각했었다. '오 코틀린은 stream 호출안해도 알아서 stream 으로 바꿔주나보다' 이렇게 생각한 근거는 딱히 없다. 그냥 stream 과 동일한 API 를 제공하고있어서 그렇게 생각했던것 같다. (많이 알겠지만 filter, map 과 같은 api들은 매우 범용적인 네이밍이라 프로그래밍 언어 차원을 넘어서서 여기저기서 많이 제공하고있는 명칭이다.) 하지만 그게 아니란걸 알게되어 이 포스팅을 작성하게됐다. 사실 신중히 고민해봤다면 이상한걸 느꼈어야한다. stream 으로 변..
1. 자바의 지역변수 스레드 세이프 자바에서 지역변수는 람다나 익명클래스 내에서 값을 변경할 수 없다. 람다나 익명클래스에서만 값을 변경할 수 없을뿐아니라 람다나 익명클래스에서 읽고(read) 있다면 외부 메서드 내에서도 값을 변경할 수 없다. 이 규약을 지키기위해 람다가 없던 자바7까지는 익명클래스에서 외부 메서드의 지역변수를 읽기위해선 지역변수를 final 로 선언했어야했고, 람다가 추가된 자바8 이상에서는 effectively final(사실상 final) 이라는 규약으로 final 변수가 아니더라도 람다나 익명클래스에서 읽고있다면 사실상 final 이 되어 어디서도 값을 변경할 수 없다. public void test() { int number = 100; new Runnable() { @Over..
면접관으로 들어가서 알고있는 디자인 패턴이 어떤게 있는지를 질문해보면 가장 많이 나오는 대답이 MVC패턴과 싱글톤 패턴이다. 커뮤니티를 봐도 디자인패턴에 대한 질문은 싱글톤의 비중이 압도적이다. 개인적으로 싱글톤이 왜 이렇게 인기가 많을까 생각해봤는데 패턴이 추구하는 바가 비교적 명확하고, 처음 패턴을 공부하는 초보 개발자들이 적용하기에도 가장 만만해서 그런게 아닐까싶다. 그럼 이제 싱글턴 패턴에 대해 알아보자. 싱글턴 패턴은 애플리케이션 내에서 하나의 클래스가 하나의 인스턴스만 생성하는걸 강제하는 패턴이다. 자바에서 객체를 생성하는 메커니즘은 생성자를 이용해서 객체를 생성하는 것이다. public class Singleton { public Singleton() { } } Singleton single..
햄버거 클래스를 만든다고 생각해보자. 이번 예제부터는 코틀린으로 작성해보려한다. 자바랑 좀 다르긴 하지만 이해하는데 큰 어려움을 없을거라고... 생각한다..... open class Hamburger(private val bun: String, private val patty: String) { open fun materials(): String = "$bun $patty" } 기본 햄버거다. 햄버거 번과 패티를 갖고있다. message() 메서드는 그저 재료들을 나열하는 문자열을 반환하는 간단한 클래스다. 치즈토핑이 추가된 치즈버거를 만들고싶다. 어떻게 구현할 수 있을까? open class CheeseBurger(private val cheese: String, bun: String, patty: S..
- Total
- Today
- Yesterday
- EffectiveJava
- spring cloud
- db
- frontcode
- java8
- JavaScript Core
- programming
- JPA
- Git
- generics
- MySQL
- Spring
- servlet
- java
- http
- 정규표현식
- backend개발환경
- Jackson
- Kotlin
- TEST
- OOP
- Design Pattern
- frontend개발환경
- clean code
- DesignPattern
- toby
- go-core
- code
- mariadb
- javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |