August 04, 2021
구현이 되어있는 메소드 -> default 메소드
public interface Example {
// 추상 메소드
void hello();
// default 메소드
// 메소드 앞에 default만 붙이면 된다.
default void printHello() {
System.out.println("Hello");
}
}
기존에는
@FunctionalInterface : 함수형 인터페이스임을 가리키는 어노테이션
@FunctionalInterface
interface MyMap {
void map();
default void sayHello() {
System.out.println("Hello");
}
static void sayBye() {
System.out.println("Bye World");
}
}
인터페이스를 사용할 떄는 클래스를 설계하고 implements하고 생성했어야 했다. (귀찮, 복잡)
// 일반적인 클래스
class xxxx implements MySupply {
@Override
public String supply() {
return "HH";
}
}
// 이름없는 클래스를 생성한다. => 익명 클래스
new MySupply() {
@Override
public String supply() {
return "Hello World";
}
}.supply();
익명 메소드도 만들 수 있지 않을까?
Myrunnable r1 = new Myrunnable() {
@Override
public void run() {
System.out.println("Hello");
}
}
// 익명 메소드를 사용해서 표현 : 람다 표현식
MyRunnable r2 = () -> System.out.println("Hello");
함수
라고 부른다.개발자의 개입을 차단함으로써 안정성을 확보할 수 있다.
타입을 바꾸고 싶다면? -> 제네릭
사용 레퍼런스 타입만(Primitive type은 불가능) 제네릭에 사용할 수 있다.