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 其实还是挺多的,我没有一个个去看完尝试完,但是 应该是能举一反三的,只要会用  理解了 只是 换个需求 换个参数,学习 一定要活学活用

java1.8新特性(三 关于 ::的用法)的更多相关文章

  1. java1.8新特性之stream流式算法

    在Java1.8之前还没有stream流式算法的时候,我们要是在一个放有多个User对象的list集合中,将每个User对象的主键ID取出,组合成一个新的集合,首先想到的肯定是遍历,如下: List& ...

  2. ES6新特性三: Generator(生成器)函数详解

    本文实例讲述了ES6新特性三: Generator(生成器)函数.分享给大家供大家参考,具体如下: 1. 简介 ① 理解:可以把它理解成一个函数的内部状态的遍历器,每调用一次,函数的内部状态发生一次改 ...

  3. Stream:java1.8新特性

    原 Stream:java1.8新特性 2017年08月01日 18:15:43 kekeair-zhang 阅读数:392 标签: streamjava1-8新特性 更多 个人分类: 日记 版权声明 ...

  4. java1.8新特性(一)

    一直在更新java 版本,原来也没有关注java版本的变化 引入的一些新的api  引起注意的还是  关于一些并发包的使用,那时候才对每个版本的特性 去了解了一下,虽然 不一定都用上了,但是不管学习什 ...

  5. jdk8新特性之双冒号 :: 用法及详解

    jdk8的新特性有很多,最亮眼的当属函数式编程的语法糖,本文主要讲解下双冒号::的用法. 概念 类名::方法名,相当于对这个方法闭包的引用,类似js中的一个function.比如: Function& ...

  6. Java1.7新特性

    1.switch语句支持字符串变量 public String getTypeOfDayWithSwitchStatement(String dayOfWeekArg) { String typeOf ...

  7. java1.8新特性整理(全)

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yitian_66/article/deta ...

  8. C++2.0新特性(三)——<=default,=delete、alias(别名)、noexcept、override、final、以及和const对比>

    一.=default,=delete 1.首先我们要回顾一下类默认函数的概念: C++中,当我们设计与编写一个类时,若不显著申明,则类会默认为我们提供如下几个函数: (1)构造函数(A()).(2)析 ...

  9. java1.7新特性:try-with-resources

    转载:https://blog.csdn.net/fanxiaobin577328725/article/details/53067163 首先看代码: import org.junit.Test; ...

随机推荐

  1. js 自定义滚动条

    http://visugar.com/2017/08/18/20170818CustomScroll/    chrome浏览器 https://www.cnblogs.com/yclblog/p/6 ...

  2. nginx防盗链、nginx访问控制、nginx解析php相关配制、nginx代理

    1.nginx防盗链编辑:vim /usr/local/nginx/conf/vhost/test.com.conf写入: location ~* ^.+\.(gif|jpg|png|swf|flv| ...

  3. django实现api跨域请求访问

    第一步:安装 django-cors-headers pip install django-cors-headers 第二步:配置settings.py文件 --------------------- ...

  4. 【HAOI2011】problem a

    又看题解了,这样下去要跪啊QAQ 原题: 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) 1≤n≤100000   0≤ ...

  5. 从MySQL和MongoDB的对比,看SQL与NoSQL的较量

    张家江,网易乐得高级工程师. 贵金属(注:贵金属为笔者部门业务)的行情系统提供的接口通过Redis获取数据,目前使用Redis最多只存储了大概8000条左右的分钟k的行情数据,考虑到将来可能会有更大数 ...

  6. lapis 项目添加prometheus 监控集成grafana

    操作很简单,主要是进行界面的配置以及prometheus 服务的配置, 可以和https://www.cnblogs.com/rongfengliang/p/10074044.html &&a ...

  7. C# 键盘响应事件及键值对照表

    键盘响应事件总结 键盘响应事件是在用户按下某个键后触发的事件,可以是任意操作,但不是任意键都可以被捕获的. 原型:public event KeyPressEventHandler KeyPress ...

  8. HTTP redirect 重定向到 HTTPS

    最近帮一个顾客做网站,  需要HTTPS. 之前接触的SSL certificate直接上传到plesk 上面勾选重定向即可. 在此先吐槽下godaddy 服务贵功能还少. 用代码从HTTP来重定向到 ...

  9. yum 安装 Mysql 5.7,忘记密码解决方案

    Linux卸载yum安装的mysql 一.系统情况 Linux:Centos7.4(64位) Mysql:5.6 二.卸载mysql 1.查看安装了哪些mysql程序 Bash rpm -qa | g ...

  10. JavaScript编码风格

    最近在看前端大牛Nicbolas C.Zakas的<编写可维护的JavaScript代码>一书.觉得里面的很多知识点都写的很好,所以,就写篇博文,总结一下吧!编码规范对于程序设计来说是很重 ...