>  기사  >  Java  >  Java에서 람다 표현식을 이해하는 방법

Java에서 람다 표현식을 이해하는 방법

WBOY
WBOY앞으로
2022-06-02 11:53:082091검색

이 기사에서는 람다 표현식과 관련된 문제를 주로 소개하는 java에 대한 관련 지식을 제공합니다. 람다 표현식은 JDK8 이후 새로운 구문 형태로, 익명 내부 클래스의 코드를 단순화할 수 있습니다. 글쓰기 방법이 모든 분들께 도움이 되길 바랍니다.

Java에서 람다 표현식을 이해하는 방법

추천 학습: "java 비디오 튜토리얼"

Lambda 개요

Lambda 표현식은 JDK8이 시작된 후 새로운 구문 형식입니다

기능:익명 내부 클래스의 코드 단순화 작성 방법

형식:

(匿名内部类被重写方法的形参列表)->{
    被重写方法的方法体代码
}
注:->是语法形式,无实际意义

먼저 추상 클래스를 정의하고 익명 내부 클래스를 통해 해당 메서드를 다시 작성한 다음 단순화하고 둘 사이의 변경 사항을 비교합니다.

람다 표현식 사용 전:

public static void main (String[] args){
    People p = new People(){
    @Override
    public void run(){
        System.out.println("小学生跑的很慢");
        }
    };
    p.run();    

}
abstract class People{
    public abstract void run();
}

람다 표현식을 사용한 후:

People p = ()->{
    System.out.println("小学生跑的很慢");
};
//会出现报错

오류가 나타나는 이유는 무엇입니까? 그 이유는 람다 표현식의 이전 정의가 명확하지 않기 때문입니다. 람다 표현식은 기능적 인터페이스에서 익명 내부 클래스의 작성 형식만 단순화할 수 있으며 인터페이스에는 하나의 추상 메서드만 있습니다. 일반적으로 인터페이스가 기능적 인터페이스를 충족해야 함을 표시하기 위해 인터페이스에 @Functionalinterface 주석을 추가합니다. Lambda 표현식으로 정말 단순화되었습니다.

@FunctionalInterface//加上这个注解必须是函数式接口,且只有一个抽象方法
interface People{
    void run();
}
//简化之前的匿名内部类
People p = new People(){
    @Override
    public void run(){
        System.out.println("小学生跑的很慢!");
    }
};
//简化之后
People p = () -> {
        System.out.println("小学生跑的很慢!");
};
또한 메서드를 매개변수로 대체할 수도 있습니다.

//在原来的基础上定义一个pk方法
public static void pk(People p){
    System.out.println("跑步情况如何:")
    p.run();
}
//不使用Lambda的情况下:
pk(p);//需要在定义匿名内部类之后,将p代入;
//使用Lambda的情况:
People p = () -> {
        System.out.println("小学生跑的很慢!");
};
pk(() -> {
        System.out.println("小学生跑的很慢!");
});
//由于等号右边即是People创建的对象p,因此可以可以直接将其代入
Lambda의 이점:

Lambda는 익명 함수입니다. 람다 표현을 전달할 수 있는 코드 조각으로 이해하면 더욱 간단하고 유연한 코드를 작성할 수 있으므로 Java 언어의 표현 능력이 향상되었습니다.

Lambda의 실제 역할

이전 학습 과정에서 배열 관련 지식을 배웠습니다(배열을 오름차순 또는 내림차순으로 정렬할 수 있음). 실제로는 인터페이스 클래스입니다. 메소드:

//精简之前:
Arrays.sort(grade,new Comparator<Integer>(){
    @Override
    public int compare(Integer o1,Integer o2){
        return o2 -o1;
}
});
//精简之后:
Arrays.sort(grade,(Integer o1,Integer o2) -> {
        return o2 -o1;
});

Lambda 표현식 생략 규칙

매개변수 유형은 쓰지 않고 생략 가능

    //参考前面的实战例子
    Arrays.sort(grade,(Integer o1,Integer o2) -> {
            return o2 -o1;
    });
    //省略参数类型之后
    Arrays.sort(grade,( o1, o2){
            return o2 -o1;
    });
  • 매개변수가 하나만 있는 경우 매개변수 유형을 생략할 수 있으며 ()도 가능합니다. 생략
      //简单引用一个单个参数的例子,不需要了解其具体含义
      btn.addActionListener((ActionEvent e) -> {
          System.out.println("我是简单的例子。");
      });
      //简化之后:
      btn.addActionListener( e -> {
          System.out.println("我是简单的例子。");
      });
    • 람다 표현식의 경우 메소드 본문 코드에는 한 줄의 코드만 있습니다. 람다 표현식의 메서드 본문 코드에 한 줄의 코드만 있는 경우 중괄호와 세미콜론
        //参照上一条规则的例子
        btn.addActionListener( e -> {
            System.out.println("我是简单的例子。");
        });
        //简化之后:
        btn.addActionListener( e -> System.out.println("我是简单的例子。") );
      • 을 생략할 수 있습니다. 중괄호는 생략할 수 있습니다. 이때, 이 코드가 return 문이라면 return도 생략해야 하고 ";"도 생략해야 합니다
          //参照第一条规则的代码
          Arrays.sort(grade,(Integer o1,Integer o2) -> {
                  return o2 -o1;
          });
          //简化之后:
          Arrays.sort(grade,( o1, o2)-> o2 -o1);
        • 추천 학습: "
        • java video tutorial"

          위 내용은 Java에서 람다 표현식을 이해하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

          성명:
          이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제