![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dQ6UsB/btrzactzcqG/Pikb9bCSSA0MkYzeaJ9ef1/img.png)
함수형 인터페이스(Functional Interface)란? 추상 메소드를 단 하나만 가지고 있는 SAM (Single Abstract Method) 인터페이스입니다. @FuncationInterface 애노테이션을 가지고 있습니다. 함수형 인터페이스를 더 알아보기 전에 우선 람다 표현식 및 메소드 레퍼런스부터 알아보겠습니다. 람다 표현식(Lambda Expressions)이란? 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있습니다. 메소드 매개변수, 리턴 타입, 변수로 만들어 사용할 수도 있습니다. 그리고 코드를 확연히 줄일 수 있습니다. RunSomething runSomething = new RunSomething() { @Override public int doIt(int number)..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cXC4cr/btrzdOxF02D/SV0O2S5u2Qw5k9foDpcBQK/img.png)
인터페이스란? 클래스들이 구현해야 하는 동작들을 추상적으로 선언하는 추상 자료형입니다. Interface라는 키워드를 사용하여 선언합니다. 강제적으로 구현해야 하는 추상 메소드가 있으며, static과 final이 둘 다 선언되는 상수가 있습니다. 자바 8버전부터, default 메소드와 static 메소드를 인터페이스에 구현할 수 있습니다. 기존 자바 7버전 이하에서는 추상화 클래스에서 공통코드를 구현체 메소드로 구현하여 상속 할 경우 추상화 클래스만 상속 받을 수 있기 때문에 더 이상 상속이 불가능하였습니다. 하지만, 자바 8버전부터는 인터페이스에서 default 메소드와 static 메소드가 추가되어 상속에 대하여 자유가 생겼습니다. 기본 메소드(Default Method) 인터페이스에 메소드를 구..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Zl4mJ/btryvve88tA/oIWjJhnugYEj8UrbkqcUkk/img.png)
Annotation Processor란? Annotation Processor는 컴파일 단계에서 Annotation에 정의된 일렬의 프로세스를 동작하게 하는 것을 의미합니다. 컴파일 단계에서 실행되기 때문에, 빌드 단계에서 에러를 출력하게 할 수 있고, 소스코드 및 바이트 코드를 생성할 수도 있습니다. 사용하는 예로 자바의 @Override가 있으며, Lombok(롬북)이라는 라이브러리도 있습니다. Lombok은 자주 사용하는 라이브러리로 한번 살펴보겠습니다. Lombok이란? @Getter, @Seteer, @Builder 등의 Annotation과 Annotation Processor를 제공하여 표준적으로 작성해야 할 코드를 개발자 대신 생성해주는 라이브러리 입니다. 컴파일 시점에 Annnotatio..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c6BFcq/btryhOGOOrr/O64DkGvuJxg7kkJCgpAvLk/img.png)
프록시 패턴이란? 리얼 서브젝트는 자신이 해야 할 일만 하면서 프록시를 사용하여 부가적인 기능을 제공할 때 쓰는 패턴입니다. 프록시와 리얼 서브젝트가 공유하는 인터페이스(서브젝트)가 있고, 클라이언트가 해당 인터페이스(서브젝트) 타입으로 프록시를 사용합니다. 클라이언트는 프록시를 거쳐서 리얼 서브젝트를 사용하기 때문에 프록시는 리얼 서브젝트에 대한 접근을 관리하거나 부가기능을 제공하거나, 리턴값을 변경할 수도 있습니다. 그럼 프로젝트를 생성해서 간단히 살펴보겠습니다. package me.whiteship; public class Book { private Integer id; private String title; public Integer getId() { return id; } public void ..
- Total
- Today
- Yesterday
- 람다표현식
- 실행 엔진
- java
- java proxy pattern
- 자바 리플렉션
- 코드 커버리지
- Functional Interface
- 클래스로더
- jvm
- bytebuddy
- 프록시패턴
- Reflection
- javassist
- 애노테이션 프로세서
- java optional
- java11 optional
- JVM 구조
- 애노테이션
- javaagent
- 깃 기초
- JRE와 JDK의 차이점
- 자바 프록시 패턴
- 리플렉션
- dromos
- Java Reflection
- java abstractprocessor
- classloder
- Annotation Processor
- 바이트 코드
- optional api
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |