Home
게임과 개발사이
Cancel

chapter3 - 람다표현식

3.1 람다란 무엇인가? 메서드로 전달할 수 있는 익명 함수를 단순화 시킨 것 파라미터 + 화살표 + 바디로 이루어진다. 람다의 특징 익명 보통의 메서드와 달리 이름이 없으므로 익명 함수 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. ...

chapter2 - 동적 파라미터화 코드 전달하기

유저가 어떤 상황에서 일을 하든 소비자 요구사항은 항상 바뀐다. 변화하는 요구사항에 맞춰 엔지니어링적인 비용을 최소화 하며, 그뿐 아니라 새로 추가한 기능은 쉽게 구현할 수 있어야 하며 장기적인 관점에서 유저보수가 쉬워야 한다. 동적 파라미터를 이용하면 이문제에 효과적으로 대응할 수 있다. 동적 파라미터란? 어떻게 실행할 것인지 결정하지 않은...

chapter1 - 자바 8,9,10,11 무슨 일이 일어나고 있는가?

1.1 역사의 흐름은 무엇인가? 자바 역사를 통틀어 가장 큰 변화가 자바 8에서 일어났다. 자바 버전이 올라감에 따라 생긴 크고 작은 변화 덕분에 프로그램을 더 쉽게 구현할 수 있게 되었다. ex) 사과 무게순 정렬 고전적 코드 Collections.sort(inventory, new Comparator<Apple>() {...

Item 30 - 이왕이면 제네릭 메서드로 만들라

제너릭 메서드 메서드의 선언부에 제너릭한 타입이 선언된 메서드 public static <E> Set<E> Union(Set<E> s1, Set<E> s2){ Set<E> result = new HashSet<>(s1); result.addAll(s2); return...

Item 29 - 이왕이면 제너릭 타입으로 만들라

기존에 구현되어 있는 Object 기반의 스택 클래스를 보자 public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack(){ ...

Item 28 - 배열보다는 리스트를 사용하라

배열과 리스트(제너릭 타입)의 차이 1. 배열 (Array) 1) 배열은 함께 변한다. 즉, 공변(convariant)이다. Sub extends Super인 경우, Sub[] extends Super[]이다. class Sub extends Super { } Super[] superman = new Sub[1]; 2) 배열은 실체화(re...

Item 27 - 비검사 경고를 제거하라

제네릭을 사용하기 시작하면 수많은 컴파일러 경고를 볼 수 있음. 컴파일러 경고 예시) 비검사 형변환 경고, 비검사 메서드 호출 경고, 비검사 매개변수화 가변인수 타입 경고, 비검사 변환 경고 등 자바 7부터 지원하는 다이아몬드 연산자(<>)를 사용하면 타입 매개변수를 추론 가능. 할 수 있는 한 비검사 경고를 제거해서 ClassC...

Item 26 - 로 타입은 사용하지 말라

1. 제너릭이란? (Generic type) 클래스 내부에서 사용할 데이터 타입을 나중에 인스턴스를 생성할 때 확정하는 것. 클래스와 인터페이스 선언에 타입 매개변수가 쓰이면 이를 제너릭 클래스 혹은 제너릭 인터페이스라 한다. ex) List 인터페이스 public interface List<E> extends Collection<E...

Item 25 - 톱레벨 클래스는 한 파일에 하나만 담으라

A top level class is a class that is not a nested class. A nested class is any class whose declaration occurs within the body of another class or interface. 출처 : Oracle docs Chapter 8.Clas...

Item 24 - 멤버 클래스는 되도록 static으로 만들라

이 아이템에서는 각각의 중첩 클래스를 언제, 왜 사용해야하는지 얘기하고 있다. 중첩클래스란? 중첩 클래스(nested class): 다른 클래스 안에 정의된 클래스 정적 멤버 클래스 (비정적) 멤버 클래스 익명 클래스 지역 클래스 정적 멤버 클래스를 제외한 나머지는 내부 클래스(inner class)이다. 1. 정적 멤버 클래스...