개발공부/Java(38)
-
[Supplier] What is Java 8 Supplier interface?
What is Java 8 Supplier interface? Optional을 사용하다보면 파라미터 타입에 Supplier Interface인 경우가 있습니다. 이는 argument를 가지지 않고 결과를 리턴해주는 연산을 수행해주는 인터페이스 인데요, get() 메서드 즉 하나의 추상 메서드만 가지는 functional method 입니다. (예제코드) static Expression of(String expression) { return Arrays.stream(values()) .filter(v -> matchExpression(v, expression)) .findFirst() .orElseThrow(() -> new IllegalArgumentException(String.format("%s는 ..
2021.09.11 -
[Builder] 생성자 어노테이션
Builder와 생성자 1) @Builder란? @Builder Lombok 문서를 보면 명시적 생성자가 없을 경우에 @AllArgsConstructor를 package-private 타입으로 자동생성 한다고 나와있습니다. 그래서 명시적 생성자가 있지만 @AllArgsConstructor가 없다면 @Builder에 의해 에러가 발생될 것입니다. 따라서 @NoArgsConstructor와 같은 명시적 생성자 어노테이션을 붙일 땐 반드시 @AllArgsConstructor도 함께 명시해줘야 합니다. 2) @AllArgsConstructor란? Lombok 문서를 보면 @AllArgsConstructor generates a constructor with 1 parameter for each field in ..
2021.09.05 -
[Java] Java Stream(스트림)
Java Stream(스트림) 참고영상: Java 8 Streams Tutorial 1) Stream? 스트림은 Collections, Lists, Sets, ints, longs, doubles, arrays, files 등에서 사용이 가능합니다. 스트림 기능은 중개자(intermediate)나 종결자(terminal)로 나뉩니다. 2) 중개자 Stream 스트림 중개자 연산은 복수 사용이 가능합니다. 데이터가 클 경우 필요한 데이터로만 가공해줄 수 있습니다. 주로 쓰는 연산은 filter(), map(), sorted(), findFirst()가 있습니다. 3) 종결자 Stream 스트림 종결자 연산은 단일 사용만 가능합니다. 예를 들어 반복해서 값을 리턴해주는 forEach처럼요. collect는 ..
2021.09.03 -
(23) Mybatis - resultMap
Mybatis에서 result 값을 치환해주는 기능은 두 가지가 있습니다. 바로 resultType과 resultMap 입니다(둘은 같이 사용될 수 없습니다!!). resultType이 alias를 이용해 Mapper 클래스 경로를 치환(축약)시킬 수 있다면 resultMap은 DB의 컬럼명과 Model 클래스 필드값을 매핑해줄 수 있습니다. (참고로 JPA 사용할 땐 CAMEL CASE -> SNAKE CASE 변환 설정을 해주는 기능과 유사하다고 보입니다.) 1 2 3 4 5 6 7 8 9 10 11 12 13 select user_id, user_name, hashed_password from some_table where id = #{id} Colored by Color Scripter cs my..
2021.06.02 -
(22) defaultIfNull
defaultIfNull 정의 : Object에 사용할 수 있는 메서드로 null값이 들어와도 Exception을 던지지 않고 default값으로 대체합니다. defaultIfNull은 org.apache.commons.lang 패키지 ObjectUtils의 메서드인데, java.lang 클래스에 재사용 가능한 정적 유틸리티 메서드를 제공하는 패키지 입니다. 예시 : defaultIfNull(T Object, T defaultvalue) 참고자료 : commons.apache - ObjectUtils
2021.03.19 -
(21) checkArgument
checkArgument 정의 : checkArgument는 메서드의 생성자나 파라미터가 올바로 호출되었는지 검증하는 Preconditions 클래스의 메서드입니다. 파라미터에는 if문처럼 참/거짓 조건(boolean expression)이 들어가며 원하는 errorMessage를 추가해줄수도 있습니다. 예시 : 1 2 3 4 5 6 7 public static double sqrt(double value) { Preconditions.checkArgument(value >= 0.0, "negative value: %s", value); } void exampleBadCaller() { double d = sqrt(-1.0); } Colored by Color Scripter cs 참고자료 : Java ..
2021.03.19