본문 바로가기

Development/Java

(6)
Java Wrapper Class 의 캐싱 Wrapper Class Java에는 Primitive Type을 Reference Type으로 사용하기 위해서 만든 Wrapper Class가 있습니다.Primitive TypeWrapper ClassbyteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBooleanvoidVoid Primitive Type 값을 Wrapper Class의 인스턴스로 변환하여 쓰는 과정을 Boxing, 그 반대를 Unboxing 이라고 하는데 Java 1.5 부터는 이를 자동으로 해주는 AutoBoxing/AutoUnBoxing을 지원해 줍니다. Boxing/Unboxing Integer n1 = 1; Integer n1 = new I..
디스패치 (Dispatch) 디스패치 (Dispatch) 프로그램이 어떤 메소드를 호출할 것인가를 결정하여 그것을 실행하는 과정을 말한다.디스패치에는 2가지가 있다.Static DispatchDynamic Dispatch 아래 코드에서 각각의 디스패치가 일어난다. 정적인 디스패치 (Static Dispatch) public class Dispatch{ static class Service{ void run(){ System.out.println("run"); } void run(String msg){ System.out.println(msg); } } public static void main(String[] args){ new Service().run(); } } 위 프로그램에서 main을 실행하게 되면 Service 클래스에 정..
익명 클래스 → 람다 표현식 변환 시 주의할 점. 익명클래스에 비하여 람다표현식의 가독성은 굉장히 우수하다.아래의 예를 보자.(line 1:6) 과 line 8 은 동일한 의미이다 ! 12345678Runnable runnable1 = new Runnable() { @Override public void run() { System.out.println("Hi"); }}; Runnable runnable2 = () -> System.out.println("Hi");cs 하지만, 익명 클래스를 람다 표현식으로 변환 하고자 할때 몇 가지 주의할 점이 있다. 1. '익명 클래스'와 '람다 표현식'의 this는 다른 의미이다. 익명클래스의 this 는 익명클래스 자신을 지칭하지만, 람다 표현식에서의 this 는 선언된 클래스를 가리킨다. 예를 들면, 다음 코드에..
자바8 util 패키지에서, 람다 표현식 연습해보기 자바8 util 패키지의 함수형 인터페이스를 통해 람다 표현식을 요리 조리 잘 요리할 수 있다.아주 기본적인 인터페이스들을 가지고 연습해봤다. Comparator - int compare(T o1, T o2); 123456// 몸무게 순으로 오름차순 정렬Comparator memberComparator = (m1, m2) -> m1.getWeight().compareTo(m2.getWeight()); memberComparator.reversed() // 몸무게 내림차순으로 정렬, chaining 표현 가능 .thenComparing(Member::getAge); // 몸무게가 같을시, 나이 오름차순 정렬 Colored by Color Scriptercs Predicate - boolean test(T ..
람다 표현식에서 참조하는 지역 변수가 꼭 final이어야 하는 이유 람다 캡처링(Capturing lambda) 람다 표현식에서는 익명 함수에서와 마찬가지로, 외부에서 정의된 변수(* 책에서는 자유변수free variable 라고 소개됨)를 활용할 수 있다.(이와 같은 액션을 람다 캡처링(capturing lambda)라고 소개되어 있다) 즉, 람다 표현식에서는 인스턴스 변수, 정적 변수등을 자유롭게 body에서 참조하여 사용할 수 있다.하지만 지역 변수를 사용하기 위해서는 지역 변수가 반드시 final 로 선언되어 있어야 한다는 제약 조건이 있다. 1234567891011// In Any Method...{ ... String name = "Variable";Runnable r = () -> System.out.println(name); ... }Colored by C..
자바8. 람다 표현식에 대하여. JAVA8 의 람다 표현식 메소드로 전달할 수 있는 익명함수를 단순화 한 것이라고 보면 된다.익명함수의 성질을 동일하게 가지지만 표현이 훨씬 더 간단하며, 메소드 파라미터로 전달하거나 변수로 저장할 수 있다. 다시 설명하면, 함수형 인터페이스의 추상 메소드의 구현체를 간단하게 표현하는 것이라고 생각하면 된다. 함수형 인터페이스 정확히 하나의 추상메소드를 지정하는 인터페이스이다. JAVA 8로 넘어 오면서 @FunctionalInterface 애노테이션이 추가되었는데, 이 함수형 인터페이스를 지칭할 때 사용한다. 함수형 인터페이스가 아닌 ( = 추상메소드가 2개 이상인) 인터페이스 사용하면 컴파일 에러가 발생한다. 단, default 메소드는 제외한다. 1234@FunctionalInterfacepubli..