본문 바로가기
320x100
728x90

java18

람다를 간단하게 써보자 자바스크립트 ES6에서 지원하는 Arrow function(화살표 함수) 익명 함수 등, 많은 의미로 불리지만 람다라고 하는 익명 함수를 간단하게 사용해보려고 한다. 자바에서는 8버전 이후, 도입된 함수형 프로그래밍에서 많이 쓰이던 방식이며, 간단하게 풀어 설명하면 간략화된 메서드 선언 및 사용 방식이다. 대부분의 메서드는 이름을 가지고 고유의 기능을 수행하는데, ex) "Hello World!".equals("something"); String 클래스의 equals라는 이름을 가진 메서드처럼 말이다. 람다는 이런 이름이 없이 사용하는 함수라 익명 함수라고 불리고, 선언부 및 블록이 없기 때문에 비교적 간단해 보이기는 한다. 긴 말 필요 없이 바로 장단점에 대해서 알아보자. 장점 1. 코드의 간결성 - .. 2021. 6. 13.
if,else or switch,case 오늘 개발을 진행을 하면서 상당히 많은 경우에 수에 따라 분기 처리를 해야 하는 경우가 생겼다. 나는 여느 날과 다름없이 if else를 떡칠했고, 코드도 상당히 보기 안좋았다. 그리고 성능도 if else가 더 좋다고 생각했다. 그 근거는 배타적인 if else문에서 1번째 조건이 아니면 2번째, 2번째 조건이 true라면 조건문을 빠져나가 다음 블록으로 코드가 실행되는 줄 알았다. 그러나 결과는 달랐다. 구글링을 해보니까 if else문은 조건에 대한 경우를 iterator 방식으로 순회한다. 즉, 조건에 일치하는 블록이 있어도 모든 if else를 순회한다는 이야기다. 나름의 이유를 생각해보면 and or 조건을 통해 추가적으로 부합하는 조건이 있을 수도 있어서 다 순회하는 것 같았다. (물론 조건.. 2021. 5. 21.
Could not initialize class org.codehaus.groovy.runtime.InvokerHelper gradle wrapper로 빌드를 하려다가 위와 같은 오류를 만났다. 오류의 원인은 자바를 14버전을 사용하다가 gradle 버전이 너무 낮아서 오류가 났었다. 혼자 데모프로젝트 만든다고 14로 바꿨다가 다시 안바꿔서 났던 오류였다. 자바나 gradle 둘 중 하나의 버전을 조정해주면 된다. 2021. 3. 12.
NPE의 대처 방안 Optional 자바로 개발을 하다 보니 타입에 대한 강제성 때문에 곤란한 적이 한두 번이 아니다. 이런 점은 분명 데이터의 무결성을 지켜준다는 점에선 굉장히 이득이지만, 개발을 하면서 귀찮은 것이 한 둘이 아니다. 그리고 객체나 파라미터를 가지고 null이나 빈 문자열을 체크할 때가 많다. if(student == null){ doSomething(); }else{ doSomething(); } 예를 들면 이런 경우다. 혹은 save(student) 와 같은 경우에 NPE가 발생하는 등, 수많은 경우에서 객체가 null일 때, Exception을 발생시키는 게 아니라 값이 없음을 표현하고 없을 때, 로직을 처리하는 방안을 마련하는 게 좋다. Exception을 발생시키는 건 썩 좋은 상황은 아니기 때문이다. Optio.. 2021. 3. 1.
300x250
320x100