• Lambda表达式入门,详细介绍样例


    1. package com.ruoyi.demo.service.impl;
    2. /*
    3. */
    4. /***
    5. * lambda表达式学习
    6. * 注解限定函数式接口
    7. *//*
    8. //这个是注解,注解了之后,这个方法,没有其他第二种抽象方法,除了默认和eq方法之外
    9. //具体可以参考这个Comparator
    10. @FunctionalInterface
    11. interface TestInterFace{
    12. void testMethod();
    13. }
    14. class MyClass implements TestInterFace3{
    15. @Override
    16. public int testMethod2(int num1 , int num2) {
    17. System.out.println("我重新实现了testMethod方法!");
    18. return num1+num2;
    19. }
    20. }
    21. interface TestInterFace2{
    22. void testMethod2(int num);
    23. }
    24. @FunctionalInterface
    25. interface TestInterFace3{
    26. int testMethod2(int num1 , int num2);
    27. boolean equals(Object obj);
    28. }
    29. public class Test {
    30. public static void main(String[] args) {
    31. */
    32. /* TestInterFace t = new MyClass();
    33. t.testMethod();*//*
    34. //匿名内部类
    35. */
    36. /*TestInterFace t = new TestInterFace() {
    37. @Override
    38. public void testMethod() {
    39. System.out.println("我重新实现了testMethod方法11111!");
    40. }
    41. };
    42. t.testMethod();*//*
    43. */
    44. /* TestInterFace t = () -> System.out.println("lambda表达");
    45. t.testMethod();*//*
    46. */
    47. /* TestInterFace2 t2 = (int num) -> System.out.println("这个方法得参数:"+num);
    48. t2.testMethod2(2);*//*
    49. //一个参数,这个可以省略()
    50. */
    51. /* TestInterFace2 t2 = num -> System.out.println("这个方法得参数:"+num);
    52. t2.testMethod2(2);*//*
    53. */
    54. /* TestInterFace2 t2 = () -> {
    55. String name = "2";
    56. return name;
    57. };
    58. String s = t2.testMethod2();
    59. System.out.println(s);*//*
    60. TestInterFace3 t = (x,y) ->{
    61. System.out.println("俩个参数的值分别"+ x + y);
    62. return x+y;
    63. };
    64. int i = t.testMethod2(3, 5);
    65. System.out.println(i);
    66. }
    67. }
    68. */
    69. import java.io.PrintStream;
    70. import java.math.BigDecimal;
    71. import java.util.Comparator;
    72. import java.util.function.BiPredicate;
    73. import java.util.function.Consumer;
    74. /**
    75. * 内置四个函数式接口
    76. * 1.消费型接口 Consumer - void accept(T t)
    77. * 2.供给型接口 Supplier - T get()
    78. * 3.函数型接口 Function - R apply(T t)
    79. * 4.断言型接口 断定型接口 predicate teat
    80. *
    81. *
    82. *
    83. */
    84. /*
    85. @FunctionalInterface
    86. interface SpendMoney{
    87. void buy(BigDecimal money);
    88. }
    89. public class Test {
    90. public static void bath(BigDecimal money,SpendMoney spendMoney){
    91. spendMoney.buy(money);
    92. }
    93. public static void main(String[] args) {
    94. bath(new BigDecimal(100), new SpendMoney() {
    95. @Override
    96. public void buy(BigDecimal money) {
    97. System.out.println("本次按摩消费为"+money);
    98. }
    99. });
    100. bath(new BigDecimal(100),
    101. }
    102. }
    103. */
    104. /*
    105. public class Test {
    106. public static void bath(BigDecimal money,Consumer<BigDecimal> spendMoney){
    107. spendMoney.accept(money);
    108. }
    109. public static void main(String[] args) {
    110. bath(new BigDecimal(100), new Consumer<BigDecimal>() {
    111. @Override
    112. public void accept(BigDecimal bigDecimal) {
    113. System.out.println("本次按摩消费为"+bigDecimal);
    114. };
    115. });
    116. bath(new BigDecimal(100), x -> System.out.println("本次按摩消费为"+x) );
    117. }
    118. }
    119. */
    120. /***
    121. * * 内置四个函数式接口
    122. * * 1.消费型接口 Consumer - void accept(T t)
    123. * * 2.供给型接口 Supplier - T get()
    124. * * 3.函数型接口 Function - R apply(T t)
    125. * * 4.断言型接口 断定型接口 predicate teat
    126. * *
    127. * 方法引用
    128. * 三种使用情况 主要是方法和方法体返回需要保持一致
    129. * 1.对象::实例方法名(非静态方法)
    130. * 2.类::静态方法名
    131. * 3.类::实例方法名
    132. *
    133. */
    134. public class Test {
    135. public static void main(String[] args) {
    136. Consumer<String> con = x -> System.out.println("去啥地方了?"+x);
    137. con.accept("惠州");
    138. //1.对象::实例方法名(非静态方法)
    139. PrintStream out = System.out;
    140. Consumer<String> con2 = out::println;
    141. Consumer<String> con3 = System.out::println;
    142. con2.accept("惠州");
    143. // 2.类::静态方法命
    144. Comparator<Integer> con4 = (x, y) -> Integer.compare(x,y);
    145. System.out.println(con4.compare(1, 3));
    146. Comparator<Integer> con5 = Integer::compare;
    147. System.out.println(con5.compare(434, 3));
    148. //3.类::实例方法名
    149. BiPredicate<String,String> bp = (x,y) -> x.equals(y);
    150. System.out.println(bp.test("asb", "aa"));
    151. BiPredicate<String,String> bp2 = String::equals;
    152. System.out.println(bp2.test("asb", "asb"));
    153. }
    154. }

  • 相关阅读:
    初识Java
    MySQL8.0-分组函数ROLLUP的基本用法(GROUPING)
    Redis五种基本数据类型-ZSet
    DAO 的使用原则和适用范围
    【STM32】时钟设置函数(寄存器版)
    03 | 基础篇:经常说的 CPU 上下文切换是什么意思?(上)笔记
    好奇喵 | Surface Web ---> Deep Web ---> Dark Web
    java计算机毕业设计房屋租赁网站源码+mysql数据库+系统+lw文档+部署
    XPS数据处理(二)-科学指南针
    LeetCode220805_71、组合总和
  • 原文地址:https://blog.csdn.net/qq_41895699/article/details/127642217