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 |