关于jdk8的新特性
前言
之前一直对jdk8新特性感觉一直看不懂,现在实习也没什么事情,学习了一下,实际也没那么难。还是要多练习。
提示:以下是本篇文章正文内容,下面案例可供参考
一、函数接口是什么?
在接口中含有抽象方法(显示声明函数)的,注释@FunctionalInterface用作检查代码块
特性说明:
①在接口中只有一个非默认方法void(非静态)
②在jdk8中新增@FunctionalInterface注解进行限定,用于显示转化为ladbma表达式
③package java.util.concurrent; 和 Runnable 接口都是最直观的函数接口
二、使用步骤
1.新增4种重要的函数式接口
函数形接口
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
}
消费形接口
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
供给形接口
@FunctionalInterface
public interface Supplier<T> {
T get();
}
判断形函数
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
2.ladbma表达式
代码如下(示例):
① Lambda表达式(基于函数的匿名表达式)
public class User {
int age;
public User(int age) {
this.age = age;
}
public User() {
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
自定义接口
public interface Test {
void yourSelf(String str);
}
public static void main(String[] args) {
Test test = (str -> System.out.println(str));
test.yourSelf("你好");
}
构造器的引用
Function<Integer,User> fun = (age)->{
return new User(age);
};
静态方法的引用
Consumer con = System.out::println;
匿名方法的引用
Consumer consumer = (str)-> {
System.out.println(str);
};
类方法的调用
BiPredicate<String,String> biPredicate = String::equals;
匿名调用
BiPredicate<String,String> stringBiPredicate = (str1,str2)->{
return str1.equals(str2);
};
实例对象的引用
User user = new User();
对象方法引用
Supplier supplier = ()->user.getAge();
匿名调用
Supplier result = user :: getAge;
语法:( object str,…)[参数列表] ->[箭头符号] 代码块或表达式
相当于方法的调用、
总结
提示:这里对文章进行总结:
说白了就是通过函数式进行编程。