이 기사에서는 람다 표현식과 관련된 문제를 주로 소개하는 java에 대한 관련 지식을 제공합니다. 람다 표현식은 JDK8 이후 새로운 구문 형태로, 익명 내부 클래스의 코드를 단순화할 수 있습니다. 글쓰기 방법이 모든 분들께 도움이 되길 바랍니다.
추천 학습: "java 비디오 튜토리얼"
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; });
//参考前面的实战例子 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("我是简单的例子。") );
//参照第一条规则的代码 Arrays.sort(grade,(Integer o1,Integer o2) -> { return o2 -o1; }); //简化之后: Arrays.sort(grade,( o1, o2)-> o2 -o1);
위 내용은 Java에서 람다 표현식을 이해하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!