본문 바로가기

람다식3

람다식 메소드 참조 메소드를 참조해서 매개 변수의 정보 및 리턴 타입을 알아내어, 람다식에서 불필요한 매개 변수를 제거하는 것이 목적이다. (left, right) -> Math.max(left, right); // 를 매개변수를 제거해서 참조하는 것으로 바꾸면 Math :: max; // 로 바꿀 수 있다. 정적 메소드 참조 클래스 이름 :: 메소드 Class :: method; 인스턴스 메소드 참조 먼저 객체를 생성하고, 객체를 참조하는 변수 :: 메소드 Class class = new Class(); class :: method; 정적 메소드와 인스턴스 메소드 참조 예시 // Calculator.java public class Calculator { public static int staticM(int x, int y.. 2020. 4. 7.
람다식에서 클래스 멤버와 로컬 변수 사용 람다식의 실행 블록에서는 클래스 멤버는 제약 사항 없이 사용 가능하지만, 로컬 변수는 제약 사항이 따른다. 클래스 멤버 사용 클래스 멤버인 필드와 메소드를 람다식 실행 블록 안에서 사용하는데에 제약 사항은 없다. 하지만 this를 사용할 때 주의해야한다. 일반적으로 익명 객체 내부에서 this는 익명 객체의 참조이지만, 람다식에서 this는 람다식을 실행한 객체의 참조이다. 다음은 Inner 클래스 내부에서 람다식을 실행했기 때문에 Inner 객체를 참조하는 클래스 멤버 사용 람다식이다. // 인터페이스 ExInterface public interface ExInterface { public void method(); } // this를 사용하는 Use.java public class Use { publ.. 2020. 4. 7.
람다식 람다식은 익명함수를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝다. 람다식의 형태는 매개 변수를 가진 코드 블록이지만, 런타임 시에는 익명 구현 객체를 생성한다. Runnable runnable = new Runnable() { // 익명 구현 객체 public void run() {...} }; Runnable runnable = () -> {...}; // 람다식 람다식은 함수 정의 형태를 띠고 있지만 런타임 시에 인터페이스의 익명 구현 객체로 생성된다. 람다식은 인터페이스 변수에 대입된다. 이 말은 람다식은 인터페이스의 익명 구현 객체를 생성한다는 뜻이 된다. 인터페이스는 직접 객체화할 수 없기 때문에 구현 클래스가 필요한데, 람다식은 익명 구현 클래스를 생성하고 객체화한다. .. 2020. 4. 7.