找到 4330 篇文章 适用于 Java 8

如何在 Java 中编写多行 lambda 表达式?

raja
更新于 2020-07-10 14:08:21

10K+ 浏览量

Lambda 表达式是一个匿名方法,用于提供函数式接口定义的方法的实现。在 Java 8 中,lambda 表达式的正文也可以是复杂的表达式或语句,这意味着 lambda 表达式可以包含多行。在这种情况下,分号是必需的。如果 lambda 表达式返回结果,则还需要 return 关键字。语法([逗号分隔的参数列表]) -> {多行语句}示例接口 Employee {    String displayName(String s); } public class MultilineLambdaTest {    public static void main(String[] s) {       ... 阅读更多

Java 中有哪些内置函数式接口?

raja
更新于 2020-07-10 14:00:23

7K+ 浏览量

java.util.function 包定义了一些内置函数式接口,这些接口可以在创建 lambda 表达式或方法引用时使用。内置函数式接口:1) Function 接口Function 接口只有一个方法 apply()。它可以接受任何数据类型的对象并返回任何数据类型的结果。示例import java.util.*; import java.util.function.*; public class FunctionTest {    public static void main(String args[]) {       String[] countries = {"India", "Australia", "England", "South Africa", "Srilanka", "Newzealand", "West Indies", "Scotland"};       Function converter = (all) -> {  // lambda 表达式          String names = "";       ... 阅读更多

Java 中的构造函数引用是什么?

raja
更新于 2020-07-10 13:55:56

239 浏览量

构造函数引用类似于方法引用,只是方法名称为“new”。它可以通过使用“类名”和关键字“new”以及以下语法创建。语法 :: new在下面的示例中,我们使用 java.util.function.Function。它是一个函数式接口,其单个抽象方法是 apply()。Function 接口表示一个操作,该操作接受单个参数 T 并返回结果 R。示例import java.util.function.*; @FunctionalInterface interface MyFunctionalInterface {    Employee getEmployee(String name); } class Employee {    private String name;    public Employee(String name) {       this.name = name;    }    public String ... 阅读更多

如何在 Java 中使用 lambda 表达式实现监听器?

raja
更新于 2020-07-10 13:50:30

1K+ 浏览量

当我们对 Java 监听器使用 lambda 表达式时,我们不必显式实现 ActionListener 接口。相反,我们可以使用以下语法。语法button.addActionListener(e -> { // 一些语句 });ActionListener 接口仅定义一个方法 actionPerformed()。它是一个函数式接口,这意味着可以使用 lambda 表达式替换代码。示例import java.awt.*; import java.awt.event.*; import javax.swing.*; public class LambdaListenerTest extends JFrame {    public static void main(String args[]) {       new LambdaListenerTest();    }    private JButton button;    public ClickMeLambdaTest() {       setTitle("Lambda 表达式测试");       button = ... 阅读更多

如何在 Java 中将 lambda 表达式传递给方法?

raja
更新于 2020-07-10 12:50:58

3K+ 浏览量

将 lambda 表达式传递给具有函数式接口类型参数的方法。如果需要将 lambda 表达式作为参数传递,则接收 lambda 表达式参数的参数类型必须为函数式接口类型。在下面的示例中,lambda 表达式可以传递给一个方法,该方法的参数类型为“TestInterface”。示例接口 TestInterface {    boolean test(int a); } class Test {    // lambda 表达式可以作为 check() 方法的第一个参数传递    static boolean check(TestInterface ti, int b) {       return ti.test(b);    } } public class ... 阅读更多

在 Java 中,lambda 表达式可以访问哪些类型的变量?

raja
更新于 2019-12-11 12:30:52

886 浏览量

lambda 表达式由两部分组成,一部分是参数,另一部分是表达式,这两部分由箭头(->)符号分隔。lambda 表达式可以访问其封闭作用域的变量。lambda 表达式可以访问其封闭类的实例变量和静态变量,还可以访问其封闭作用域中实际是 final 或 final 的局部变量。语法(参数列表) -> 表达式示例接口 TestInterface {    void print(); } public class LambdaExpressionTest {    int a; // 实例变量    static int b; // 静态变量    LambdaExpressionTest(int x) {    // 构造函数初始化实例变量       this.a = ... 阅读更多

Java 中 Lambda 表达式和闭包的区别?

raja
更新于 2020-07-10 12:46:52

2K+ 浏览量

Java 支持 lambda 表达式,但不支持闭包。lambda 表达式是一个匿名函数,可以定义为参数。闭包就像代码片段或代码块,可以在不作为方法或类的情况下使用。这意味着闭包可以访问在其参数列表中未定义的变量,并将其赋值给变量。语法([逗号分隔的参数列表]) -> {主体}在下面的示例中,create() 方法有一个局部变量“value”,其生命周期很短,当我们退出 create() 方法时就会消失。此方法在 main() 方法中将闭包返回给调用者,之后 ... 阅读更多

Java 中 lambda 表达式的特征是什么?

raja
更新于 2020-07-10 12:44:50

953 浏览量

lambda 表达式是在 Java 8 中引入的,它促进了函数式编程。lambda 表达式只能与函数式接口很好地配合使用,我们不能对具有多个抽象方法的接口使用 lambda 表达式。Lambda 表达式的特征可选类型声明 - 无需声明参数的类型。编译器会根据参数的值推断出类型。参数周围可选的小括号 - 无需在小括号中声明单个参数。对于多个参数,需要使用括号。可选的大括号 - 如果表达式主体包含一个 ... 阅读更多

如何在 Java 中使用 lambda 表达式处理异常?

raja
更新于 2020-07-10 12:01:45

3K+ 浏览量

lambda 表达式主体不能抛出函数式接口中未指定的任何异常。如果 lambda 表达式可以抛出异常,则函数式接口的“throws”子句必须声明相同的异常或其子类型之一。示例接口 Student {    void studentData(String name) throws Exception; } public class LambdaExceptionTest {    public static void main(String[] args) {       // lamba 表达式         Student student = name -> {          System.out.println("学生的姓名是:" + name);          throw new Exception();       };       try {          student.studentData("Adithya");       } catch(Exception e) {       }    } }输出学生的姓名是:Adithya

如何在 Java 中在 lambda 表达式中使用 final 或有效 final 变量?

raja
更新于 2020-07-10 11:58:59

2K+ 浏览量

有效 final 变量指的是未显式声明为 final 的局部变量,并且一旦初始化就不能更改。lambda 表达式只能使用外部作用域中的局部变量,前提是它们是有效 final。语法(可选) (参数) -> 主体在下面的示例中,“size”变量未声明为 final,但它是有效 final,因为我们没有修改“size”变量的值。示例接口 Employee {    void empData(String empName); } public class LambdaEffectivelyFinalTest {    public static void main(String[] args) {       int size = 100;       Employee emp = name -> {        // lambda ... 阅读更多

广告