본문 바로가기
JAVA

람다란

by 슈슈슉민 2023. 11. 23.

https://code-sumin.tistory.com/27

 

익명 클래스란

package anonymousclass; public class Person { private String name; public Person(String name) { this.name = name; } public MyReadable createInstance(final int age) { //local inner class class PersonWithAge implements MyReadable { @Override public void read

code-sumin.tistory.com

 

지난 글에서 interface를 구현하는 방법에 두가지가 있다고 설명했다.  

 

1. 클래스에 붙어 구현시킨다.

package lambda;

public class Main {

    public static void main(String[] args) {

        System.out.println();
        Addable myAdder = new AdderImple();
        double result = myAdder.add(1.11, 3.222);
        System.out.println(result);

        System.out.println();
        //--------------------------------------------
    }
}

interface Addable {
    public abstract double add(double x, double y);
}

class AdderImple implements Addable{

    @Override
    public double add(double x, double y) {
        return x + y;
    }
}

 

2. 익명클래스에 붙어 구현시킨다.

 

	.
	.
	.
double z = 39.2;
        System.out.println(new Addable() {
            @Override
            public double add(double x, double y) {
                return x + y + z;
            }
        }.add(1.11, 3.222));
    }
}

interface Addable {
    public abstract double add(double x, double y);
}

 

 

이번 글에서는 람다를 사용해 구현하는 방법을 알아볼 것이다. 정말  간단하다 짠!

 

	.
	.
	.
Addable rd = (a,b) -> a + b;
        result = rd.add(1.333, 2.555);
        System.out.println(result);

 

a,b에서 type이 명시되지 않는데 어떻게 interface라는 것을 알 수 있었을까 바로 대입연산자알려준다. Addable 객체를 참조해서 알 수 있었던 것이다.(그렇기에 람다 expression 단독 사용은 불가하다.) 

 

아래는 람다 사용 예시이다.

 

package lambda;

public interface Inter {

    public abstract void NoParNoRet();
}

------

package lambda;

public interface Inter2 {
    public abstract void NoRet(int num);
}

------

package lambda;

public interface Inter3 {

    public abstract int manyPar(int num1, int num2);

}

-------

package lambda;

public interface Inter4 {
    public abstract void manyCodes(double x, double y);
}
package lambda;

public class Main2 {

    public static void main(String[] args) {
        Inter i1 = () -> System.out.println("안농");
        i1.NoParNoRet();

        Inter2 i2 = (i) -> System.out.println(i++);
        i2.NoRet(23);

        Inter3 i3 = (a, b) -> (a > b) ? a : b;
        System.out.println(i3.manyPar(1, 2));

        Inter4 i4 = (x, y) -> {
                if(x > y){
                    System.out.println(x + " > " + y);
                }else {
                    System.out.println(x + " < " + y);
                }
        };
        i4.manyCodes(3.14, 1.2);
    }


}

'JAVA' 카테고리의 다른 글

MultiThread란? + Lock 사용 방법  (0) 2024.06.20
익명 클래스란  (0) 2023.11.23