zoukankan      html  css  js  c++  java
  • java1.8新特性(三 关于 ::的用法)

    java1.8 推出了一种::的语法 用法 身边 基本没人用1.8的新API 目前 我也是只处于学习 运用 阶段 有点 知其然不知其所以然 通过后面的学习,及时查漏补缺

    一个类中 有 静态方法 ,非静态方法,构造方法

    1. :: 操作静态方法
      package lambda;
      
      /**
       * @author 作者:cb
       * @version 创建时间:2019年1月3日 下午4:07:01
       * 
       */
      
      public class User {
          static void getName(String s) {
              System.out.println("该用户的名字:" + s);
          }
      }
          public static void main(String[] args) {
              Consumer<String> consumer = User::getName;
              consumer.accept("consumer");
              
          }

       User::getName 其中 getName 是 一个static 方法 所以 可以 直接使用:: ::表示方法 推导  User::getName  必须要有一个 function的返回值,该返回值 可以 是自己定义  也可以使用java1.8 的 带的接口 如果是自己定义接口 则可以这样:


      package lambda;

      /**
      * @author 作者:cb
      * @version 创建时间:2019年1月3日 下午4:11:30
      *
      */
      @FunctionalInterface
      public interface UserInterfce<F> {

      void convert(F form);

      }


      这里 既然 既然 已经帮我们提供了接口  没有必要的话 直接 用 就可以了。。当然 也可以 自己 定义一个 funcationinterface 的接口

    2. ::操作 构造方法

      package lambda;
      
      /**
       * @author 作者:cb
       * @version 创建时间:2019年1月3日 下午4:07:01
       * 
       */
      
      public class User {
          static void getName(String s) {
              System.out.println("该用户的名字:" + s);
          }
      
          public User() {
              System.out.println("无参构造器");
          }
      
          public User(String str) {
              System.out.println("有参" + str);
          }
      
      }
      package lambda;
      
      import java.util.function.Consumer;
      import java.util.function.Supplier;
      
      import com.google.common.base.Function;
      
      /**
       * @author 作者:cb
       * @version 创建时间:2019年1月3日 下午4:09:43
       * 
       */
      public class SomethingTest {
          public static void main(String[] args) {
              Consumer<String> consumer = User::getName;
              consumer.accept("consumer");
      
              UserInterfce<String> userInterfce = User::getName;
              userInterfce.convert("自定义fancation");
              Function<String, User> function = User::new;
              User apply = function.apply("构造器");
      }

      上次说过 Function<T,R> 接受一个 T 参数 返回一个 R 参数,所以 可以用作有参构造函数的调用 如果 想调用无参构造函数   则 可以使用 :

      Supplier<User> supplier = User::new;
      User user = supplier.get();

    3. ::调用 实例方法,其实 调用实例方法 个人觉得没有必要这样搞了

      User user1=new User();
              Consumer<String> consumer1=    user1::disName;
              consumer1.accept("实例方法调用");
    4. 1.8里面的API 其实还是挺多的,我没有一个个去看完尝试完,但是 应该是能举一反三的,只要会用  理解了 只是 换个需求 换个参数,学习 一定要活学活用
  • 相关阅读:
    eclipse整合spring+springMVC+Mybatis
    复杂系统分析与设计思路
    .NET数据挖掘与机器学习开源框架
    原来rollup这么简单之 rollup.watch篇
    面试官:说说你对css效率的理解
    两个实用的调试技巧
    Roma
    一个很实用的css技巧简析
    仅仅知道如何终止XHR请求,或许对你来说是不够的!
    再问你一遍,你真的了解try..catch(finally)吗???
  • 原文地址:https://www.cnblogs.com/920913cheng/p/10216072.html
Copyright © 2011-2022 走看看