문자열 두 개를 연결하여 출력하는 예제
@FunctionalInterface
public interface StringConcat {
public void makeString(String s1, String s2);
}
public class StringConcatImpl implements StringConcat{
@Override
public void makeString(String s1, String s2) {
System.out.println(s1 + ", " + s2);
}
}
String s1 = "Hello";
String s2 = "World";
StringConcatImpl strImpl = new StringConcatImpl();
strImpl.makeString(s1, s2);
StringConcat concat = (s, v) -> System.out.println(s + ", " + v);
//클래스 만드는 부분이 생략되고 람다식으로 구현
concat.makeString(s1, s2);
람다식을 구현하면 익명 내부 클래스가 만들어지고 이를 통해 익명 객체가 생성된다
StringConcat concat2 = new StringConcat(){ //아예 생략되는 것이 아니라 내부에서 익명 클래스로 만들어 진다 @Override public void makeString(String s1, String s2){ System.out.println(s1 + ", " + s2); } };
인터페이스
interface PrintString{ void showString(String str); }
람다식을 대입
PrintString lambdaStr = s->System.out.println(s); //람다식을 변수에 대입 lambdaStr.showString("hello lambda_1");
showMyString(lambdaStr); public static void showMyString(PrintString p) { p.showString("hello lambda_2"); }
public static PrintString returnString() { //반환 값으로 사용 return s->System.out.println(s + "world"); } PrintString reStr = returnString(); reStr.showString("hello ");