람다 (lambda)
자바스크립트 화살표 함수보다 조건이 많음
인터페이스 사용 문법을 엄청나게 축약한 것
이너(inner) 클래스 : 클래스 안에 선언된 클래스
클래스의 멤버(구성요소) : 멤버 변수(필드), 메서드, 생성자, 클래스
public class Outer {
private int num;
public Outer(){
this.num=0;
}
// 멤버 이너 클래스
class Board{
public void printNum(){
System.out.println("num="+num);
}
}
// 메서드
public void aaa(){
int age=0; // 지역변수
// 로컬 이너 클래스
class Item{
public void printAge(){
System.out.println("age="+age);
}
}
}
}
public class OuterTest {
public static void main(String[] args) {
// Outer 클래스에 대한 객체 생성
Outer outer=new Outer();
// Board 클래스의 객체 생성
Outer.Board board = outer.new Board();
// 요새 안씀 그냥 클래스안에 클래스가 있을 수 있다라는 거만 알아두기
}
}
람다 적용을 위해서는 인터페이스에 하나의 추상메서드만 존재해야 함
추상 메서드가 하나만 존재하는 인터페이스 : 함수형 인터페이스
public interface Printable {
void print();
}
public class LocalOuter {
public Printable getPrinter(){
Printable 인터페이스의 객체 생성
class MyPrinter implements Printable{
public void print() {
System.out.println("프린터 실행");
}
}
Printable p1= new Printable() {
public void print() {
System.out.println(111);
}
};
Printable p2=()->{
System.out.println(111);
};
// 생성한 객체를 리턴
return p1;
}
}