과제
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));
}
}
· 람다 표현식은 익명 클래스로 전환이 가능하고, 역 또한 가능하다.
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 |
댓글