본문 바로가기

목록83

[자바 디자인패턴] 1. Adapter 패턴 Adapter 패턴 이란? 이미 제공되어 있는 부분에서 개조를 통하여 필요한 것으로 만드는 패턴이다. 예를 들면 우리가 노트북을 사용할 때 어댑터를 연결해서 사용하는데 이 어댑터는 220V의 전압을 노트북에 맞게 변환해 주는 역할을 한다. Adapter패턴에는 상속을 이용한 Adapter패턴과 위임을 사용한 Adapter패턴이 있다. 1. 상속을 이용한 Adapter패턴 상속을 이용한 패턴은 말 그대로 Adapter에서 이미 제공 되어있는 부분들을 상속하여 구현하는 방법이다. fun main() { val adapter: Adapter = LabtopAdapter(12) adapter.flowElectric() } class LabtopAdapter(private val voltage: Int): Lab.. 2022. 8. 13.
[이펙티브자바] 8.메서드 1. 매개변수가 유요한지 검사하라. 1.1. 메서드 몸체가 수행되기 전에 매개변수를 검사하라.(assert, requireNonNull 등 사용) 2. 적시에 방어적 복사본을 만들어라. 2.1. 외부에서 수정가능하지 못하게 방어적 코드를 작성하라. 더보기 import java.io.IOException; import java.util.Date; class Main { public static void main(String[] args) throws IOException { Date start = new Date(); Date end = new Date(); Period period = new Period(start, end); end.setYear(78); // period의 내부를 수정 System.o.. 2022. 8. 6.
[이펙티브자바] 7.람다와 스트림 1. 2. 람다보다는 메서드 참조를 사용하라. 2.1. 메서드 참조가 람다보다 더 간결한 경우 메서드 참조를 이용해라. 2.2. 메서드 참조는 5가지의 유형이 있다. 더보기 유형 메서드 참조 람다 Static Integer::parseInt str -> Integer.parseInt(str) Bounded Instant.not()::isAfter Instant instant = new Instant.now() t -> instant .isAfter(t) UnBounded String::toLowerCase str -> str.toLowerCase() Class Constructor TreeMap::new () -> new TreeMap() Array Constructor int[]::new len -> .. 2022. 7. 25.
[이펙티브자바] 5.제네릭 1. Raw타입은 사용하지 말아라 1.1. Raw 타입(타입 매개변수가 없는 제네릭 타입)을 사용하면 제너릭의 안정성과 표현력을 잃게 된다. 더보기 public class EffectiveJava { private final Collection stamps = new ArrayList(); // 타입을 명시해서 작성 //private final Collection stamps = new ArrayList(); //Compile에는 문제 없으나 Runtime시 ClassCastException 에러 발생 public void main(){ stamps.add(new Coin()); stamps.add(new Stamp()); Iterator iterator = stamps.iterator(); while(.. 2022. 7. 8.
implementation 했는데 import가 안될때 우측 Gradle에 있는 Toggle Offline Mode를 끄고 다시 sync를 맞춘다. 2022. 7. 6.
[Kotlin] Sequence vs Collections 안녕하세요. 이번 포스팅에서는 Sequence와 Collections에 대해 알아보려고 합니다. Sequence는 Iterable로 구현된 Collections에서 사용하는 함수의 기능을 수행 하는 class 입니다. 다만 동작방식에서 Collection과 다른데 이전 포스팅에서 list의 Collection map과 flatMap을 비교하면서 Collection은 해당 api의 연산을 모두 마친 후에 다음 결과를 보여주는걸 알 수 있는데요. Sequence 는 오히려 연산을 하나씩 차례대로 진행하는 순서입니다. 공식 사이트에 있는 코드를 예시로 들어보겠습니다. Collection의 함수는 매 api의 모든 결과를 받고 다음으로 넘기게 되어있습니다. 이 과정을 Eagerly Evaluation 이라고 합.. 2022. 7. 5.