본문 바로가기
스터디/F-lab

[F-lab] 3주차 정리_자바

by 책 읽는 개발자_테드 2021. 8. 31.
반응형

과제

 

Enum을 사용한 싱글턴(Singleton)

https://scshim.tistory.com/361

 

UTF-8 인코딩

https://scshim.tistory.com/356

 

 

익명클래스  & SAM(single abstract method) interface & lambda

익명클래스

 · 이름이 없는 클래스

 · 클래스 이름, 객체 이름이 없으므로 다른 클래스나 메소드에서 참조, 재사용 불가

 · 익명 클래스의 장점: 메모리 사용량 , 애플리케이션 시작 시간↓ (클래스를 만들고, 호출하면 그 정보가 메모리에 올라가므로)

 

예시

      MagicButton button = new MagicButton();
        button.setListener(new EventListener() {
            @Override
            public void onClick() {
                System.out.println("Magic Button Cliecked");
            }
        });

 

· setListener() 메소드를 보면, new EventListener()로 생성자를 호출한 후 바로 중괄호를 열어 onClick() 메소드를 구현했다. 이렇게 구현한 것이 익명 클래스다.

 

SAM(Single Abstract Method)

·  SAM은 하나의 추상 메서드를 의미한다. 자바에서는 이렇게 하나의 추상 메서드만 존재하는 인터페이스를 함수형(Functional) 인터페이스라고한다.

interface Calculate{
	int operation(int a, int b);
}

 

·  자바 8부터는 함수형 인터페이스를 통해 람다식을 표현할 수 있다.

·  이러한 함수형 인터페이스의 오류를 덜어주는 @FunctionalInterface 라는 어노테이션이 존재한다.

@FunctionalInterface
interface Calculate{
	int operation(int a, int b);
}

 

·  위와 같이 함수형 인터페이스 이름 위에 @FunctionalInterface를 입력하면, 자바 컴파일러는 해당 인터페이스를 함수형 인터페이스로 인식하고 두 개 이상의 메소드 선언시 에러를 발생하시켜 개발자에게 알려준다.

 

Lambda

·  람다 표현식은 메소드를 하나의 식으로 표현한 것이다.

·  메서드를 람다식으로 표현하면 메서드의 이름과 반환 값이 없어지므로, 람다식은 '익명함수(anonymous function)'이라고도 한다.

public class CalculateDemo {
    public static void main(String[] args){
        int x=1;
        int y=2;
        Calculate calculate = (a,b) -> a + b;
        System.out.println(calculate.operation(x,y));
    }
}

main 메서드 실행 결과

·  람다 표현식은 익명 클래스로 전환이 가능하고, 역 또한 가능하다.

public class CalculateDemo {
    public static void main(String[] args){
        int x=1;
        int y=2;
        Calculate calculate = new Calculate() {
            @Override
            public int operation(int a, int b) {
                return a+b;
            }
        };
        System.out.println(calculate.operation(x,y));
    }
}

 

 

출처

자바의신

https://www.javacodemonk.com/single-abstract-method-sam-and-functional-interface-in-java-44f22fc3

 

 

반응형

'스터디 > F-lab' 카테고리의 다른 글

[F-lab] 7주차 정리 - 웹 프로그래밍 기초와 JSP  (0) 2021.10.07
[F-lab] 5주차 정리  (0) 2021.09.14
[F-lab] 2주차 정리_자바  (0) 2021.08.24

댓글