Java 8 - 17 新特性整理
Java 8
新特性
Lambda 表达式和函数式接口
Lambda 表达式是一种匿名函数,允许将函数作为参数传递给方法,或者在集合操作中以更紧凑的方式编写代码。函数式接口是只有一个抽象方法的接口,可隐式转换为 Lambda 表达式。Java 8 提供了 @FunctionalInterface 注解来显式说明某个接口是函数式接口。
示例:
import java.util.Arrays;
import java.util.List;
public class LambdaDemo {
public static void main ( String [] args ) {
List < String > names = Arrays.asList( "Alice", "Bob", "Charlie" );
// Java 7 及之前使用匿名类遍历列表
for ( String name : names ) {
System.out.println( name );
}
// Java 8 使用 Lambda 表达式遍历列表
names.forEach( name -> System.out.println( name ) );
}
}
传统方式与新特性对比:传统方式使用匿名类,代码冗长;Lambda 表达式简化了代码结构,避免了匿名类的冗余代码。
接口的默认方法和静态方法
Java 8 允许在接口中定义默认方法和静态方法。默认方法使得开发者可以在不破坏二进制兼容性的前提下,往现存接口中添加新的方法,不强制实现类实现该方法。静态方法可以直接通过接口调用。
示例:
interface Formula {
double calculate ( int a);
default double sqrt ( int a) {
return Math.sqrt(a);
}
}
public class Main {
public static void main(String[] args) {
Formula formula = new Formula() {
@Override
public double calculate ( int a) {
return sqrt(a * 100);
}
};
formula.calculate( 100); // 100.0
formula.sqrt( 16); // 4.0
}
}
Stream API
Stream API 提供了一种声明式的方式来处理集合数据,支持流式处理、懒加载和并行计算。可以对集合进行过滤、映射、归约等操作。
示例:
import java.util.Arrays;
import java.util.List;
public class StreamDemo {
public static void main ( String [] args ) {
List < Integer > numbers = Arrays.asList( 1, 2, 3, 4, 5, 6 );
// Java 7 及之前使用循环过滤偶数并打印
for (

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



