怎么在网上做网站,国外做建材的网站有哪些,成都效果图制作公司排行榜,中国建设银行安徽分行网站Lambda表达式
定义:可以看作是一种没有名称#xff08;即匿名#xff09;的函数。Lambda表达式主要用于表示那些只有一个抽象方法的接口#xff08;即函数式接口#xff09;的实例.
这边可以用接口定义抽象的方法,再用lambda继续完善方法,注意的是 接口是只支持单一函数l…Lambda表达式
定义:可以看作是一种没有名称即匿名的函数。Lambda表达式主要用于表示那些只有一个抽象方法的接口即函数式接口的实例.
这边可以用接口定义抽象的方法,再用lambda继续完善方法,注意的是 接口是只支持单一函数lambda调用. 用FunctionalInterface (parameters) - expression 或 (parameters) - { statements; } 参数列表描述了函数的输入箭头符号将参数列表与函数体连接起来函数体则描述了函数的具体行为。 模版
// 定义一个函数式接口
FunctionalInterface
interface Greeting { void sayHello(String name);
} public class Main { public static void main(String[] args) { // 使用Lambda表达式创建Greeting接口的实例 Greeting greeting name - System.out.println(Hello, name); // 调用Lambda表达式表示的方法 greeting.sayHello(World); }
}
匿名内部类
匿名内部类在Java中用于创建一个没有名称的类实例它通常用于实现接口或扩展一个类
注意的是:interface没有用FunctionalInterface函数接口
模版
interface Greeting { void sayHello();
} public class AnonymousInnerClassExample { public static void main(String[] args) { // 使用匿名内部类实现 Greeting 接口 Greeting greeting new Greeting() {
//新建一个类,然后重写了sayHello方法 Override public void sayHello() { System.out.println(Hello, World from Anonymous Inner Class!); } }; // 调用匿名内部类实现的方法 greeting.sayHello(); }
} 匿名内部类和lambda区别
接口中只有一个抽象方法且需要更简洁的语法时建议使用Lambda表达式而当接口中有多个抽象方法或需要更多灵活性时可以使用匿名内部类。
在了解闭包之前 先了解一下作用域
局部变量作用域是在类的主体中声明的变量 如 int b 10;
实例变量作用域在类的主体中声明的变量 public class Person { // 实例变量 String name; int age; public void setName(String name) { this.name name; // 在方法内部访问和修改实例变量 } } 类变量静态变量作用域在Java中的作用域是整个类,这意味着它们可以在类的任何方法或代码块中被访问而无需创建类的实例
public class StaticVariableExample { // 静态变量类变量 public static int staticVar 42; public static void main(String[] args) { // 通过类名直接访问静态变量 System.out.println(静态变量的值 StaticVariableExample.staticVar); // 创建类的实例 StaticVariableExample instance new StaticVariableExample(); // 通过对象实例访问静态变量尽管不推荐这样做 System.out.println(通过实例访问静态变量的值 instance.staticVar); // 修改静态变量的值 StaticVariableExample.staticVar 100; // 再次打印静态变量的值以验证其已被修改 System.out.println(修改后的静态变量的值 StaticVariableExample.staticVar); }
}
方法作用域:方法内部声明的局部变量和参数的作用域。它们只能在该方法内部被访问。 void print(){System.out.println(VariableHolder.print);
} 参数作用域方法参数的作用域仅限于该方法内部。一旦方法执行完毕参数变量就会被销毁。 void print(String name){System.out.println(name name);
} 块作用域块作用域指的是在代码块如if语句、for循环等内部声明的变量的作用域
闭包
闭包可以被视为一个能够访问和操作在其外部作用域中定义的变量的Lambda表达式或匿名内部类。由于Lambda表达式可以捕获其所在上下文的变量因此它们可以保留对外部变量的引用并在稍后的时间点执行时访问这些变量即使这些变量在Lambda表达式定义之后的外部作用域中已经不再可用。
模版
public class UsingLambda{public static void main(String[] args) {// 定义一个外部变量final int outerVariable 10;// 使用Lambda表达式创建一个闭包Runnable closure () - {System.out.println(outerVariable inside closure: outerVariable);};// 执行闭包closure.run(); // 输出outerVariable inside closure: 20}}这边使用了Runnable 接口是为了实现代码的复用,可以不在定义一个FunctionalInterface函数接口的接口
注意的是 outerVariable是最终变量,如果需要更改的话,可以封装一个对象类解决
public class UsingLambda {public static void main(String[] args) {// 创建一个包含外部变量的对象class VariableHolder {int value 10;}VariableHolder holder new VariableHolder();// 使用Lambda表达式创建一个闭包闭包捕获的是holder对象的引用Runnable closure () - {System.out.println(outerVariable inside closure: holder.value);};// 改变外部变量的值通过修改holder对象的状态holder.value 20;// 执行闭包closure.run(); // 输出outerVariable inside closure: 20}
}