대충 이런 느낌!Java 8 람다식 초대략!

무슨 보도요?


업무 중에 한가하기 때문에 자바8의 추가 람다식을 조사했습니다.
그 인상으로 정리한 기사.

보도의 대상은 누구입니까?


Java의 기본을 제압했다!
람다식?인터넷에서 검색해도 너무 디테일해서 모르겠네요(^q^)
사람을 향하다.

람다식이 뭐예요?


람다식은 JDK1이다.8에 도입된 문법.
요즘 보는 것 같아, e->System.out.예를 들어 println(e.toString()) 같은 것.
함수형 인터페이스는 대입할 수 있는 물건이다.

무슨 좋은 점이 있습니까?


비록 람다식을 배웠다고 해서 반드시 대단한 알고리즘과 인기를 얻는 것은 아니다.
다만, 득의양양한 표정이 있을지도 모른다?
나는 람다식의 장점은 코드가 좀 짧다는 것이라고 생각한다.
그리고 뒤에는 함수형 인터페이스로 간단하게 만들 수 있다.
예를 들어 Runnable 인터페이스를 구현한 경우
지금까지 익명 클래스를 사용했다면.
MyThread01.java
public class MyThread {
    Thread thread;
    public MyThread(){
        thread = new Thread(new Runnable(){
            @Override
            public void run() {
                System.out.println("(/・ω・)/私です。");
            }
        });
    }
}
람다식을 사용하면.
MyThread02.java
public class MyThread {
    Thread thread;
    public MyThread(){
        thread = new Thread(()->System.out.println("(/・ω・)/私です。"));
    }
}
이렇게 하면 짧아진다.기분 나빠요?

보태다


아마 저처럼 자바를 적당히 배우면'익명반? 뭐? 난 몰라'가 될 거예요.
익명 클래스의 설명이 생략되었습니다. 익명 클래스로 쓰지 않은 코드가 아래의 코드로 바뀌었습니다.
MyThread03.java
public class MyThread {
    Thread thread;
    public MyThread(){
        thread = new Thread(new MyRunnable());
    }

    private class MyRunnable implements Runnable{
        @Override
        public void run() {
            System.out.println("(/・ω・)/私です。");
        }
    }
}
'익명반'을 대략적으로 설명하는데, 이름도 안 붙이고 반을 발표하는 놈이다.
MyThread01.자바에서 MyThread03.자바처럼 MyRunnable라는 반은 없죠?
익명 반이니까!

람다식의 설명.


익명 클래스로 실시된 것과 λ식으로 실시된 대응을 가시화하였다.
내 인상은 이렇다!
image01.png
정말 데면데면하구나!
참, 파란색 부분은 뭐예요?의문이 되지 않나요?
파란색 부분은 매개 변수!
Runnable 인터페이스에 파라미터가 없어서 분별하기 어려워요!
파라미터가 있는 자제 인터페이스에서 볼래요!
아까와 마찬가지로 익명 클래스를 사용하는 경우.
MyTestClass01.java
public class MyTestClass {

    public MyTestClass(){
        new Watashidesu(new MyTestInterface() {
            @Override
            public void watashidesuPrint(String str) {
                System.out.println(str+"私です!");
            }
        });
    }

    private class Watashidesu{
        String str ="(/・ω・)/";
        public Watashidesu(MyTestInterface mti) {
            mti.watashidesuPrint(str);
        }
    }
    private interface MyTestInterface{
        public void watashidesuPrint(String str);
    }
}
람다식을 사용할 때.
MyTestClass02.java
public class MyTestClass {

    public MyTestClass(){
        new Watashidesu((e)->System.out.println(e+"私です"));
    }

    private class Watashidesu{
        String str ="(/・ω・)/";
        public Watashidesu(MyTestInterface mti) {
            mti.watashidesuPrint(str);
        }
    }
    private interface MyTestInterface{
        public void watashidesuPrint(String str);
    }
}
조금, 인터페이스와 인터페이스를 이용해 반을 만들었더니 가독성이 떨어지네요!
공공 My TestClass() 섹션만 보십시오!
아까 파란색으로 둘러싸인 부분이 달라요!
익명반이라면, [String str] 네!
람다식에 [e]가 있어요!
즉 람다식의 e는 스트링형의str(')를 나타낸다ω')
어떤 장르인지는 알려지지 않았지만, 아무래도 잘할 것 같았다.
그나저나 (e) 를 (String e) 로 바꿔도 괜찮다.
장르 선언을 하지 않으면 기분이 안 좋을 사람은 선언을 하세요.
똑똑히 쓰면 독자의 관점에서 보면 더욱 좋을 것이다.
아!또한 람다식의 e는 변수명의 규정을 준수하면 무엇이든지 k!
일반적으로 줄어듭니다.(람다식 내에서만 사용?)

람다식 이용지


지금까지의 샘플을 보니 마치 고무로 인터페이스를 대체하는 것 같았다.
네!람다식 이용점은 인터페이스 변수를 대입할 때!
그러니까!
関数型インターフェイス  ラムダ式 を代入
()
Runnable r  ()=>{}を代入
아마 저처럼 자바의 초보자를 적당히 배웠는데 인터페이스를 들으면'implements 뒤에 있어요','어쨌든 Runnable을 implements에 두세요!'나는 거의 부족한 지식이라고 생각한다.나는 코드를 쓰는 과정에서 인터페이스의 편리성에 주의할 것이라고 생각한다.Design Mode를 사용하여 읽어들이는 것이 좋습니다.
또한 λ식으로 대입할 수 있는 인터페이스는 함수형 인터페이스만 있다.
나는 함수형 인터페이스가 무엇이어야 한다고 생각하지만, 결코 그렇게 어렵지 않다.
함수형 인터페이스도 인터페이스의 일부분이지만 약간의 제한이 있다.
어쨌든 Runnable의api부터 봅시다.
API : 운행 인터페이스
추상적인 방법을 보세요!

네!추상적인 방법이 하나밖에 없어!
네!추상적인 방법은 단지 하나의 인터페이스가 함수형 인터페이스이다!
이런 물건은 위쪽처럼 고무로 대체할 수 있다.
참고로 다음 인터페이스도 함수형 인터페이스입니다!
API : 공유 인터페이스
API : 인터페이스
API : 외부 인터페이스
반대로 이런 녀석은 함수형 인터페이스가 아니다.
API : List 커넥터
따라서 람다식으로 대입할 수 없습니다!

보태다


기본적으로 추상적인 방법은 하나뿐이지만 간혹 여러 함수형 인터페이스가 존재한다.
Object 클래스의 public 메서드가 인터페이스 내에서 추상적인 메서드로 정의된 경우 여러 메서드가 존재합니다.
Functional Interface를 모방한 경우 함수형 인터페이스가 틀림없습니다.

총결산


이번에는 람다식 기술법과 함수형 인터페이스의 설명이다.
처음에는 라마식 쓰기에 저촉될 수도 있지만 사용하면서 익숙해진다.
"()->"를 몇 번 쓰는 게 좋을 것 같아요!나는 코드를 보는 것 뿐만 아니라 코드를 쓰는 것도 깊이 이해할 수 있다고 생각한다.
나는 람다식으로 스트림과 관련이 있다고 생각하기 때문에 며칠 후에 나도 간단하게 정리할 것이다.
만약 잘못되거나 이해하지 못하는 부분이 있으면 메시지를 남겨 주세요.
감사합니다.

좋은 웹페이지 즐겨찾기