本文将为您提供关于阶段1语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节常用函数接口_5_函数式接口作为方法的参数案例的详细介绍,同时,我们还将为您提供关于JDK8新特性--常用
本文将为您提供关于阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_5_函数式接口作为方法的参数案例的详细介绍,同时,我们还将为您提供关于JDK8新特性--常用函数接口--函数式接口作为方法的参数案例、JDK8新特性--常用函数接口--函数式接口作为返回值的参数案例、阶段 1 语言基础 + 高级_1-3-Java 语言高级_02 - 继承与多态_第 3 节 接口_10_接口的私有方法使用、阶段 1 语言基础 + 高级_1-3-Java 语言高级_02 - 继承与多态_第 3 节 接口_3_接口的抽象方法定义的实用信息。
本文目录一览:- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_5_函数式接口作为方法的参数案例
- JDK8新特性--常用函数接口--函数式接口作为方法的参数案例
- JDK8新特性--常用函数接口--函数式接口作为返回值的参数案例
- 阶段 1 语言基础 + 高级_1-3-Java 语言高级_02 - 继承与多态_第 3 节 接口_10_接口的私有方法使用
- 阶段 1 语言基础 + 高级_1-3-Java 语言高级_02 - 继承与多态_第 3 节 接口_3_接口的抽象方法定义
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_5_函数式接口作为方法的参数案例
Lambda
使用的前提 ,方法的参数必须是一个函数式的接口。
优化版:
JDK8新特性--常用函数接口--函数式接口作为方法的参数案例
package com.itheima.demo03.LambdaTest;
/*
例如java.lang.Runnable接口就是一个函数式接口,
假设有一个startThread方法使用该接口作为参数,那么就可以使用Lambda进行传参。
这种情况其实和Thread类的构造方法参数为Runnable没有本质区别。
*/
public class Demo01Runnable {
//定义一个方法startThread,方法的参数使用函数式接口Runnable
public static void startThread(Runnable run){
//开启多线程
new Thread(run).start();
}
public static void main(String[] args) {
//调用startThread方法,方法的参数是一个接口,那么我们可以传递这个接口的匿名内部类
startThread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"-->"+"线程启动了");
}
});
//调用startThread方法,方法的参数是一个函数式接口,所以可以传递Lambda表达式
startThread(()->{
System.out.println(Thread.currentThread().getName()+"-->"+"线程启动了");
});
//优化Lambda表达式
startThread(()->System.out.println(Thread.currentThread().getName()+"-->"+"线程启动了"));
}
}
JDK8新特性--常用函数接口--函数式接口作为返回值的参数案例
package com.itheima.demo03.LambdaTest;
import java.util.Arrays;
import java.util.Comparator;
/*
如果一个方法的返回值类型是一个函数式接口,那么就可以直接返回一个Lambda表达式。
当需要通过一个方法来获取一个java.util.Comparator接口类型的对象作为排序器时,就可以调该方法获取。
*/
public class Demo02Comparator {
//定义一个方法,方法的返回值类型使用函数式接口Comparator
public static Comparator<String> getComparator(){
//方法的返回值类型是一个接口,那么我们可以返回这个接口的匿名内部类
/*return new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
//按照字符串的降序排序
return o2.length()-o1.length();
}
};*/
//方法的返回值类型是一个函数式接口,所有我们可以返回一个Lambda表达式
/*return (String o1, String o2)->{
//按照字符串的降序排序
return o2.length()-o1.length();
};*/
//继续优化Lambda表达式
return (o1, o2)->o2.length()-o1.length();
}
public static void main(String[] args) {
//创建一个字符串数组
String[] arr = {"aaa","b","cccccc","dddddddddddd"};
//输出排序前的数组
System.out.println(Arrays.toString(arr));//[aaa, b, cccccc, dddddddddddd]
//调用Arrays中的sort方法,对字符串数组进行排序
Arrays.sort(arr,getComparator());
//输出排序后的数组
System.out.println(Arrays.toString(arr));//[dddddddddddd, cccccc, aaa, b]
}
}
阶段 1 语言基础 + 高级_1-3-Java 语言高级_02 - 继承与多态_第 3 节 接口_10_接口的私有方法使用
这是上一节的代码
我们现在新建一个实现类去实现上面的接口
这里的 common 方法是不能独立存在的。它是专门为了 methodDefault1 和 2 存在的,它只能被这两个方法使用。不应该被你的实现类用到
所以这里用私有方法进行改造
那么实现类中就调用不到这个接口内的私有方法了。这里就会报错了。
私有静态方法
Ctrl+C+V 复制一个实现类 A 出来改名字叫做 B
接口中静态方法也可能产生重复代码的问题
公共的方法提取。只不过现在是 public static 的公共方法。这种做法也不恰当。所以实现类里面都可能访问到这个 common 的公共方法
这里改成 private 就可以了。这是 Java9 里面新添加的内容
这样一来 private 就只有本接口中才能访问
这里把方法名字改成了 methodStatic1 和 2
调用接口里面的静态方法
Common 这个方法是访问不到的
这是个错误的写法
阶段 1 语言基础 + 高级_1-3-Java 语言高级_02 - 继承与多态_第 3 节 接口_3_接口的抽象方法定义
光标放在这里。就可以光标上下箭头的来回选择。
这样我就创建了一个接口
定义的抽象方法。public abstract 颜色是灰颜色的
必须是固定的格式
把 public 换成了 private 就会报错
这两个关键字可以省略不写
省略 abstract 不写也是抽象方法
public abstract 都省略了 也是抽象方法
关于阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_5_函数式接口作为方法的参数案例的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于JDK8新特性--常用函数接口--函数式接口作为方法的参数案例、JDK8新特性--常用函数接口--函数式接口作为返回值的参数案例、阶段 1 语言基础 + 高级_1-3-Java 语言高级_02 - 继承与多态_第 3 节 接口_10_接口的私有方法使用、阶段 1 语言基础 + 高级_1-3-Java 语言高级_02 - 继承与多态_第 3 节 接口_3_接口的抽象方法定义等相关知识的信息别忘了在本站进行查找喔。
本文标签: