首页 > 编程语言 >Java8 新特性02-方法引入

Java8 新特性02-方法引入

时间:2022-10-28 13:01:44浏览次数:50  
标签:02 String args public 引用 引入 new 方法 Java8


文章目录

方法引入

什么是方法

方法引用:需要结合lambda表达式能够让代码变得更加精简。

  1. 匿名内部类使用
  2. Lambda调用匿名内部类
  3. 方法引入
方法引用
  1. 静态方法引入: 类名::(静态)方法名称
  2. 对象方法引入 类名:: 实例方法名称
  3. 实例方法引入 new对象 对象实例::方法引入
  4. 构造函数引入 类名::new

需要遵循一个规范:

方法引入 方法参数列表、返回类型与函数接口参数列表与返回类型必须要保持一致

类型

语法

对应lambda表达式

构造器引用

Class::new

(args) -> new 类名(args)

静态方法引用

Class::static_method

(args) -> 类名.static_method(args)

对象方法引用

Class::method

(inst,args) -> 类名.method(args)

实例方法引用

instance::method

(args) -> instance.method(args)

方法引用提供了非常有用的语法, 可以直接引用已有的Java类或对象的方法或构造器, 方法引用其实也离不开lambda表达式

当lambda联合使用.减少代码的冗余

方法引用提供非常有用的语法 ,可以直接引用已有的Java类或者对象中方法或者构造函数方法引用需要配合lambda表达式语法一起使用减少代码的冗余性问题

  1. 构造器引用
  2. 静态引用
  3. 对象方法引用
  4. 实例方法引用
MayiktService
public interface MayiktService {
String get(Test23 test23);
}


MessageInterface
@FunctionalInterface
public interface MessageInterface {
void get(Integer var1, Integer var2);
}


MessageInterface2
@FunctionalInterface
public interface MessageInterface2 {
String getMessage();
}


MessageInterface3
@FunctionalInterface
public interface MessageInterface3 {
MessageEntity getMessage();
}

静态方法引入

public class TestLL01 {
public static void main(String[] args) {
//最原生的调用
// new MessageInterface() {
// @Override
// public String get(Integer var1, Integer var2) {
// System.out.println(ssss);;
// }
// }
//方法引入
MessageInterface staticGet = TestLL01::staticGet;
staticGet.get(12, 20);
}
public static void staticGet(Integer a, Integer b) {
System.out.println("staticGet,a:" + a + "+++" + b);
}
}

实例对象引用

public class TestLL02 {
/**
* 实例对象引用
*
* @param args
*/
public static void main(String[] args) {
// MessageInterface2 messageInterface2 = () -> {
// return "dasdasd";
// };
// System.out.println(messageInterface2.getMessage());
TestLL02 testLL02 = new TestLL02();
String object = testLL02.object();
System.out.println(object);
}

public String object() {
return "dadasda";
}
}

构造函数引入

public class TestLL03 {
/**
* 构造函数引用
*
* @param args
*/
public static void main(String[] args) {
MessageInterface3 messageInterface3 = () -> new MessageEntity();
AcanthopanaxInterface aNew = MessageEntity::new;
System.out.println(aNew);
}
}

对象方法引入

public class Test23 {
public static void main(String[] args) {
//1. 使用匿名内部类的形式
MayiktService mayiktService = new MayiktService() {
@Override
public String get(Test23 test23) {
return test23.object();
}
};
System.out.println(mayiktService.get(new Test23()));
//2.lambda
MayiktService mayiktService2 = test23 -> test23.object();
System.out.println(mayiktService2.get(new Test23()));

//3.方法引用 这哥时候函数接口 第一个参数传递test23 返回调用test23.object方法
MayiktService mayiktService3 = Test23::object;
System.out.println(mayiktService3.get(new Test23()));

// R apply(T t); T applu方法传递的参数类型 : R apply 方法返回的类型
//需要降string 类型字符串获取长度
// Function<String, Integer> stringIntegerFunction = (str) -> {
// return str.length();
// };
Function<String, Integer> stringIntegerFunction1 = String::length;
System.out.println(stringIntegerFunction1.apply("dasdadasd"));
}

private String object() {
return "niwwewe";
}
}


标签:02,String,args,public,引用,引入,new,方法,Java8
From: https://blog.51cto.com/u_15850876/5804541

相关文章

  • Java8 新特性01-接口修饰-Lambda
    Java8新特性文章目录​​Java8新特性​​​​接口中默认的方法修饰为普通方法​​​​Lambda表达式​​​​为什么要使用Lambda表达式​​​​Lambda表达式的规范​​​​......
  • Java8 新特性04-Optional
    文章目录​​优秀的文章​​​​JDK8-Optional​​​​判断参数是否为空​​​​参数为空可以设定默认值​​​​参数实现过滤​​​​与Lambda表达式结合使用,优化代码​​......
  • JavaWEB06--book02--利用反射合并 LoginServlet 和 RegistServlet 程序为 UserServlet
    ​​项目源码​​合并LoginServlet和RegistServlet程序为UserServlet程序优化一:使用​​if-else​​优化代码二:使用​​反射​​优化大量elseif代码:protectedvo......
  • 数据结构与算法(Python)[超详细版本] 02-2 栈-栈的操作(或实现)
    ##栈结构实现栈可以用顺序表实现,也可以用链表实现。栈的操作ListitemStack()创建一个新的空栈push(item)添加一个新的元素item到栈顶pop()弹出栈顶元素peek()返回栈顶......
  • javaSE02基础语法
    java基础语法IDE的使用IDE(IntegratedDevelopmentEnvironment)集成开发环境包含编辑器,编译器,调试图形界面IntelliJIDEA捷克的一家公司收费的EclipseIBM公司开发的......
  • 20221027&20221028 神经网络入门:神经网络判断奇偶数
    神经网络https://www.ibm.com/cn-zh/cloud/learn/neural-networks神经网络反映人类大脑的行为,允许计算机程序识别模式,以及解决人工智能、机器学习和深度学习领域的常见......
  • 数据结构与算法--002-稀疏数组
    稀疏数组当一个数组中的很多值默认是0,因此记录了很多没有意义的数据,因而需要稀疏数组基本介绍:当一个数组中大部分是由零,或者为同一个值的数组时,可以使用稀疏数组.稀疏......
  • ON1 NoNoise AI 2023 for mac(图片降噪软件)中文版
    ON1NoNoiseAIformac一款图片降噪软件,ON1NoNoiseAI中文版智能去除所有图像噪点,同时智能恢复和增强细节。它通过支持常见的照片编辑器和文件格式集成到您的工作流程中,......
  • 221027 %你赛
    我对舟舟人的厌恶更深一层(大雾T1烧结核凝晶题目斯宝在维多利亚发现了一种新的物质——转质盐。巨船的工匠发现转质盐可以制作一种名叫烧结核凝晶的材料,工匠们已经试制......
  • 2021 icpc 沈阳 I 【分式线性变换的保交比性】
    分式线性变换的保交比性对于分式线性变换,具有保交比性应用在复数域下,存在分式线性变换,给定三个输入和输出,再给定第四个输入,求其在这个分式线性变换下的输出。https:/......