동일성과 동등성 '동일하다'와 '동등하다'는 거의 같은 단어처럼 들리겠지만 프로그래밍에서는 큰 차이를 가지고 있다. int나 double 같은 기본 타입의 경우 우리는 '==' 연산자를 통해 같음을 확인한다. 그러나 객체의 경우 우리가 같다고 취급하고 싶어도 equals 메서드 혹은 '==' 연산자로 동일함이 확인되지 않는다. System.out.println(1 == 1); // true // 리터럴로 생성된 string은 string pool에 담겨 같은 객체가 재사용된다. String string1 = "string"; String string2 = "string"; System.out.println(string1 == string2); // true System.out.println(string1..
가변 인수(Varargs) 사용하기 Java 5 이전에는 메서드에 다른 개수의 인수들을 넣기 위해서는 메서드를 여럿 정의하거나 배열의 형태로 인수를 넘겨주어 처리해야 했다. Java 5의 가변 인수(Varargs)의 등장으로 Object... 와 같이 메서드의 인수를 0개 이상 받을 수 있게 선언이 가능해지며 이러한 불편함이 사라지게 되었다. public void method(String... strings) { for (String string : strings) { System.out.println(string); } } // method("a", "b", "c") 와 같이 사용 이렇게 가변 인수를 통해 입력을 배열처럼 편하게 처리할 수 있는 지금과 달리 public void method(String..
전략 패턴과 템플릿 콜백 패턴 템플릿 콜백 패턴은 전략 패턴을 발전시킨 형태이다. 전략 패턴은 보통 인터페이스와 그것들의 구현체(전략들, Strategy)를 생성해 놓고, Client 클래스가 구현체를 선택하여 그것을 실행시킬 Context 클래스에 주입하여 원하는 전략을 실행시키는 방식으로 구성된다. 이 패턴을 통해 여러 구현체를 만들어놓고, 상황에 따라 Client 클래스의 구현체 선택만을 바꾸는 방식으로 프로그램을 손쉽게 수정할 수 있다. 템플릿 콜백 패턴에선 전략 패턴과 다르게 전략들을 따로 만들어두지 않는다. 그 대신 익명 클래스를 사용해 Client 클래스에서 Context 클래스에 익명 클래스를 통해 전략을 바로 생성하여 주입한다. 템플릿 콜백 패턴을 통해 반복되는 로직을 뽑아내자 반복되는 ..
객체지향 생활체조 원칙에선 '모든 원시값과 문자열을 포장한다'라는 규칙이 존재한다. 객체지향적 설계를 위해 원시값을 포장해 얻는 이점이 무엇이며, 어떻게 사용하면 좋을까? 원시값을 포장하여 책임을 분산시키자 모의 로또 게임을 위한 값을 입력받는 상황을 가정하자. 원시값을 포장하면 아래와 같이 새로 입력받은 값에 대한 검증을 private List getLottoNumbers() throws Exception { List lottoNumbers = new ArrayList(); for (int i = 0; i < 6; i++) { int lottoNumber = readLottoNumber(); validateLottoNumber(lottoNumber); lottoNumbers.add(lottoNumber..
선수지식: [Java] - 람다식(Lambda Expression) 메서드 참조란? 메서드 참조(method reference)란 이미 존재하는 메서드 혹은 참조변수를 간결하게 지칭하는 방법이다. 람다식이 하나의 메서드만 호출하는 경우 그 식을 더 간결하게 나타내는 데에 쓰이며, 스트림 연산에서 빈번하게 사용된다. 이렇게 사용된 메서드 참조는 컴파일 단계에서 컴파일러가 알아서 람다식을 생성하여 처리된다. 사용법 람다식은 매개변수와 함수 몸체를 화살표(->)로 이어 구성했다면, 메서드 참조는 매개변수와 화살표, 소괄호를 제거하고 아래와 같이 쓴다. 클래스명(혹은 참조변수명)::메소드명 예시 1. Math.pow() 아래와 같이 Math.pow() 메서드의 람다식을 메서드 참조로 변형하여 사용 가능하다. p..
사용되는 지식: 함수형 인터페이스 람다식(Lambda Expression) 메서드 참조 디폴트 메서드 단순한 Array 혹은 숫자만 포함된 List의 구현체(ArrayList, LinkedList)들을 오름차순 정렬하려면 java.util.Arrays나 java.util.Collections의 sort() 메서드에 해당 자료구조를 파라미터로 넘겨주기만 하면 된다. import java.util.Arrays; public class test { public static void main(String[] args) { int[] arr = {3,2,1}; Arrays.sort(arr); // => arr = {1, 2, 3} } } 하지만 예를 들어, 단순하게 하나의 숫자의 비교를 통한 정렬이 아니라, 사람..
- Total
- Today
- Yesterday
- JPA
- java switch case
- Spring 테스트
- 생성자 주입
- GitHub Discussion 템플릿
- 우테코 5기
- MySQL
- GitHub Discussion
- springboottest
- invokedynamic
- Java
- Payload 암호화
- 우테코
- 자바
- 스프링
- multiplebagsfetchexception
- 우테코 프리코스
- Spring Boot Monitoring
- MySQL 이벤트 스케줄
- stubbing
- GitHub Discussion Template
- RandomPort
- Jenkins 예약 배포
- logback-spring.xml
- Spring
- 람다식
- Fromtail
- 의존성 주입
- JPA JSON
- 함수형 인터페이스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |