一、Lambda表达式
在Java 8中,Lambda表达式被引入,它是一个匿名函数,可以像参数传递一样进行传递。Lambda表达式是一种比较简洁的写法,可以帮助我们提高代码的灵活性。
下面是一个对比:
public class TraditionalWay {
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
public void run() {
System.out.println("Hello from traditional way!");
}
});
t1.start();
}
}
public class LambdaExpression {
public static void main(String[] args) {
Thread t2 = new Thread(() -> {
System.out.println("Hello from Lambda expression!");
});
t2.start();
}
}
从上面的例子可以看出,使用Lambda表达式可以省略匿名类的定义,让代码更加简洁易读。
二、Stream API
Stream API是Java 8中引入的一个新特性,它可以让我们更加方便地对集合进行操作。Stream API提供了很多方法,可以让我们对集合进行筛选、映射、归约等操作。
下面是一个使用Stream API进行过滤的例子:
List<String> list = Arrays.asList("Java", "Python", "JavaScript", "Ruby");
list.stream()
.filter(s -> s.startsWith("J"))
.forEach(System.out::println);
从上面的例子可以看出,Stream API让代码更加简洁易读,同时可以提高代码的灵活性。
三、Optional类
Optional类是Java 8中引入的一个新特性,它可以用来解决空指针异常问题。使用Optional类可以让我们更加优雅地处理空指针异常,同时也提高了代码的灵活性。
下面是一个使用Optional类处理空指针的例子:
public class OptionalExample {
public static void main(String[] args) {
String str = "Hello, World!";
Optional<String> optionalStr = Optional.ofNullable(str);
optionalStr.ifPresent(System.out::println);
}
}
从上面的例子可以看出,使用Optional类可以帮助我们更加优雅地处理空指针异常,让代码更加灵活易读。
四、多态
多态是Java中的一个基本概念,它可以让我们将不同类型的对象都看作同一类型的对象。多态可以提高代码的灵活性和可扩展性。
下面是一个使用多态的例子:
public class PolymorphismExample {
public static void main(String[] args) {
Animal animal1 = new Dog();
Animal animal2 = new Cat();
animal1.makeSound();
animal2.makeSound();
}
}
abstract class Animal {
abstract void makeSound();
}
class Dog extends Animal {
void makeSound() {
System.out.println("Woof!");
}
}
class Cat extends Animal {
void makeSound() {
System.out.println("Meow!");
}
}
从上面的例子可以看出,使用多态可以让我们以一种更加灵活的方式处理对象,同时也提高了代码的可扩展性。