博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java1.8新特性(三 关于 ::的用法)
阅读量:4662 次
发布时间:2019-06-09

本文共 2181 字,大约阅读时间需要 7 分钟。

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
    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
    consumer = User::getName; consumer.accept("consumer"); UserInterfce
    userInterfce = User::getName; userInterfce.convert("自定义fancation"); Function
    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
    consumer1= user1::disName; consumer1.accept("实例方法调用");

     

  4. 1.8里面的API 其实还是挺多的,我没有一个个去看完尝试完,但是 应该是能举一反三的,只要会用  理解了 只是 换个需求 换个参数,学习 一定要活学活用

转载于:https://www.cnblogs.com/920913cheng/p/10216072.html

你可能感兴趣的文章