jdk1.8 -- 方法推导 静态方法、实例方法、构造方法推导
一.静态方法的推导
public class MainTest {
public static void main(String[] args) {
// 正常情况下我们需要通过写一个consumer的方法来调用
testConsumer("abc",(s)->System.out.println(s));
System.out.println("=====================");
//但是我们只是将一个内容输入,没必要这么麻烦,jdk1.8 已经为我们考虑到这样的写法
testConsumer("abc",System.out::println);
//语法:
// ContainingClass::staticMethodName
}
public static void testConsumer(String s,Consumer<String> c){
c.accept(s);
}
}
二.实例方法推导
public class MainTest {
public static void main(String[] args) {
//2.实例方法的推导
// 通常情况我们要获取一个字符串的值应该这样获取
String value = "123";
String valueOf1 = String.valueOf(value);
System.out.println("======== valueOf1 ====== "+valueOf1);
//通过lambda 表达式可知,这其实就是一个FunctionInterface,而在jdk1.8中定义了特殊的写法
// 语法:
// containingObject::instanceMethodName
Function<String,String> f = String::valueOf;
System.out.println("======== valueOf 2 ====== "+f.apply("123"));
}
}
三.构造函数推导
public class MainTest {
public static void main(String[] args) {
//3.构造函数推导
//3.1通常情况我们可以通过lambda推导来创建一个对象
testConstruct("red", 100,(s,w)->new Apple(s,w));
//3.2在jdk1.8 的lambda 中写法如下
BiFunction<String,Long,Apple> fApple = Apple::new;
fApple.apply("red", 100L);
//总结:构造函数其实就是一个静态方法而已,只不过是特殊的一个方法,为什么 new 一个对象还要这么麻烦
// 我们通过这种写法可以在jdk1.8后面的应用中可以更加的快捷和方便
}
public static Apple testConstruct(String color,long weight,BiFunction<String,Long,Apple> f){
return f.apply(color,weight);
}
}
jdk1.8 -- 方法推导 静态方法、实例方法、构造方法推导的更多相关文章
- C#三大方法:虚方法、静态方法、实例方法
虚方法:使用virtual关键字定义,当子类继承父类时,可以对父类中的虚方法进行重写. 如下面代码中的类B,它继承类A,类A实现了接口I(实现了接口中的foo()方法).在类A中使用virtual将f ...
- Python的列表推导式,字典推导式,集合推导式使用方法
推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种 1.列表推导式也叫列表解析式.功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表格式:用中括号括起 ...
- iOS---类方法(静态方法)和实例方法
类方法 实例方法是以+开头的方法, 实例方法是用实例对象访问: 类方法的对象是类而不是实例,通常用来创建对象或者工具类. 在实例方法里,根据继承原理发送消息给self和super其实都 ...
- python的各种推导式(列表推导式、字典推导式、集合推导式)
推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2和3中都有支持: 列表(lis ...
- Java8新特性之四:接口默认方法和静态方法
在JDK1.8以前,接口(interface)没有提供任何具体的实现,在<JAVA编程思想>中是这样描述的:"interface这个关键字产生了一个完全抽象的类,它根本就没有提供 ...
- C# 动态方法和静态方法的区别
C# 动态方法和静态方法的区别 (转) 动态方法与静态方法的区别: 1,使用方法上的区别:动态方法,在使用时需要先创建实例,才能调用实例方法,而静态方法则不需要,直接使用即可. 示例代码如下:静态方法 ...
- jdk8系列一、jdk8 Lamda表达式语法、接口的默认方法和静态方法、supplier用法
一.简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性. 在本文中我们将学习这些新特性,并用实际 ...
- Python基础8:列表推导式(list)字典推导式(dict) 集合推导式(set)
推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种 1.列表推导式也叫列表解析式.功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表格式:用中括号括起 ...
- python ——面向对象进阶(反射,双下线方法,静态方法,类方法)
属性 如果你已经了解Python类中的方法,那么属性就非常简单了,因为Python中的属性其实是普通方法的变种. 哎,其实就是这样,我们看一下当我们想查看税后工资的时候,这其实是一个人的属性,但是它却 ...
随机推荐
- 北京清北 综合强化班 Day1
a [问题描述]你是能看到第一题的 friends呢. —— hja何大爷对字符串十分有 ...
- python 生成螺旋矩阵
对于任意 m*n 矩阵,将 1~m*n 的数字按照螺旋规则在矩阵中排列. 如 m=3,n=3,期望结果为: [ [ , , ], [ , , ], [ , , ] ] 以下代码支持方阵以及非方阵. c ...
- 软件开发中什么是CI/CD
持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误. 持续部署(continuous d ...
- mysql与Oracle的区别:
1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高. 2. Oracle支持大并发,大 ...
- antd源码分析之——折叠面板(collapse)
官方文档 https://ant.design/components/collapse-cn/ 目录 一.antd中的collapse 代码目录 1.组件结构图(♦♦♦重要) 2.源码节选:antd/ ...
- ubuntu php
ubuntu 12.04安装php7 和配置apache2 https://www.cxybj.com/?p=231 https://blog.csdn.net/u011608531/article/ ...
- VS2015编译cef3-2357
1.会遇到把警告当错误的情况 按照如下设置即可 2. 错误 C2334 “:”的前面有意外标记:跳过明显的函数体 (编译源文件 E:\cef_binary_3.2357.1271.g8e0674e_w ...
- 2.2 Go语言基础之位运算操作
一.位运算符 位运算符对整数在内存中的二进制位进行操作. 运算符 描述 & 参与运算的两数各对应的二进位相与. (两位均为1才为1) | 参与运算的两数各对应的二进位相或. (两位有一个为1就 ...
- easyUI之Layout(布局)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- Android中常见的默认实现类
* Basexxx* Defaultxxx* Simplexxx* Baicxxx