Effective Java 3/E Item 54 null이 아닌,빈 컬렉션이나 배열을 반환하라
1. null이 아닌, 빈 컬렉션이나 배열을 반환하라 1.1. 컬렉션이 비었으면 null을 반환한다. - 따라하지말아야 하는 방법 123456789/** * * @return 매장 안의 모든 치즈 목록을 반환한다. * 단, 재고가 하나도 없다면 null을 반환한다. */public List<Cheese> getCheess1(){
1. null이 아닌, 빈 컬렉션이나 배열을 반환하라 1.1. 컬렉션이 비었으면 null을 반환한다. - 따라하지말아야 하는 방법 123456789/** * * @return 매장 안의 모든 치즈 목록을 반환한다. * 단, 재고가 하나도 없다면 null을 반환한다. */public List<Cheese> getCheess1(){
1. 오버라이딩(Overriding) 자바의 경우는 오버라이딩 시 동적바인딩되며 상위 클래스 혹은 인터페이스에 존재하는 메소드를 하위 클래스에서 필요에 맞게 재정의하는 것을 말합니다. 2. 오버로딩(Overloading) 메소드의 이름과 return 타입은 동일하지만, 매개변수만 다른 메소드를 만드는 것을 말합니다. 오버로딩은 다른 시그니쳐를 만들며 정
1. Generic(제네릭)이란? 제네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어듭니다. 타입 안정성을 높인다는 것은 의도 하지 않은 타입의 객체가 저장되는 것을 막고 저장된 객체를 꺼내올 때 원래의 타
1. Java Annotation Java 어노테이션은 JEE5부터 추가된 문법이며 기본적으로 인터페이스입니다. 사전적정의로는 주석이라는의미를 가지고 있고 특수한의미를 부여하거나 기능을 주입하면서 컴파일타임 시점이나 런타임시점에 해석됩니다. 기존의 xml의 불편함을 개선하기위해서 나오게된 Annotation(어노테이션) 이라고생각하면 됩니다. 2. Bu
1. Java Collection(컬렉션) Java Collection(컬렉션)은 크게 List, Map, Set 인터페이스를 기준으로 구현체가 존재하며 Stack, Queue 인터페이스도 존재하게 됩니다. 컬렉션이 배열과 다른점? 컬렉션과 배열은 둘 다 개체에 대한 참조를 보유하고 그룹으로 관리 할 수 있다는 점에서 유사합니다. 그러나 Arra
1. JVM(Java Virtual Machine) JVM을 살펴보기전에 Java에서 사용되는 용어들을 정리하고 진행하겠습니다. JDK: Java SE Development Kit 자바 개발 키트, JRE+컴파일러, 디버거 등의 개발도구 JRE: Java SE Runtime Environment 자바 구동 환경, JVM+시스템 라이브러리 JVM
1. 익명클래스 보다는 람다를 사용하라 자바에서 함수 타입을 표현할 때 추상 메서드를 하나만 담은 인터페이스를 사용했습니다. 이러한 인터페이스의 인스턴스를 함수 객체(function object)라고 하여, 특정 함수나 동작을 나타내는 데 썼습니다. 1997년 JDK1.1 이 등장하면서 함수 객체를 만드는 주요 수단은 익명 클래스가 되었습니다. 문자열을
1. 람다보다는 메서드 참조를 사용하라 람다가 익명 클래스보다 나은 점 중에서 가장 큰 특징은 간결함입니다. 그런데 자바에는 함수객체를 심지어 람다보다도 더 간결하게 만드는 방법이 있습니다. 바로 메서드 참조(Method reference)입니다. 다음 코드는 임의의 키와 Integer 값의 매핑을 관리하는 프로그램의 일부입니다. 키의 인스턴스 개수로 해
1. Reactive Streams란 Rxjava 버전이 1.x에서 2.x로 올라간 배경에는 Reactive Streams가 있습니다. Reactive Streams란 라이브러리나 프레임워크 상관없이 데이터 스트림을 비동기로 다룰수 있는 공통 매커니즘으로, 이 매커니즘을 편리하게 사용할 수 있는 인터페이스를 제공합니다. Reactive Streams 즉,
1. What is RxJava? 자바(Java)에서 리액티브 프로그래밍(Reactive Programming)을 구현하는데 사용하는 라이브러리입니다. 이벤트 처리와 같은 비동기 처리에 최적화됐으며, 2.0버전부터 Reactive Streams 사양을 구현합니다. Reactive Streams 사양을 구현합니다. Reactive Streams는 어떤 라이