V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hqtc
V2EX  ›  Java

Java8 的一个方法吐槽

  •  1
     
  •   hqtc · 2016-08-05 18:06:06 +08:00 · 5519 次点击
    这是一个创建于 2821 天前的主题,其中的信息可能已经有所发展或是发生改变。

    偶然看到 Java 8 中, Objects 工具类中有一个一个判断传入的对象是否为 null 的方法,感觉有点萌啊。

    public static boolean isNull(Object obj) {
        return obj == null;
    }
    

    敢问各位小伙伴,这种方法为啥要搞到 jdk 里面呢,意义何在?

    23 条回复    2016-09-06 12:31:18 +08:00
    skydiver
        1
    skydiver  
       2016-08-05 18:09:15 +08:00   ❤️ 1
    Java8 支持了函数式编程,函数可以作为参数传入。

    如果标准库不提供你就总得自己写 lambda ,太麻烦
    skydiver
        2
    skydiver  
       2016-08-05 18:10:40 +08:00   ❤️ 1
    注释里都写了,为什么不仔细看了就来发帖。

    * @apiNote This method exists to be used as a
    * {@link java.util.function.Predicate}, {@code filter(Objects::isNull)}
    youxiachai
        3
    youxiachai  
       2016-08-05 18:33:04 +08:00
    估计到时候...函数式又有一波吐槽了...
    ChiangDi
        4
    ChiangDi  
       2016-08-05 18:41:06 +08:00 via Android
    这不是萌
    ChiangDi
        5
    ChiangDi  
       2016-08-05 18:41:16 +08:00 via Android
    这是原则
    ChiangDi
        6
    ChiangDi  
       2016-08-05 18:42:20 +08:00 via Android
    估计又有人要来吐槽 npm 上两行代码也能做一个模块了
    acoder2013
        7
    acoder2013  
       2016-08-05 18:55:04 +08:00
    看看注释就知道每一个方法的意义
    wander2008
        8
    wander2008  
       2016-08-05 20:09:14 +08:00 via iPhone
    我想你可能是想多了。就想记自己写个工具类判断一样的。
    xgfan
        9
    xgfan  
       2016-08-05 20:18:48 +08:00
    /**
    * Returns a function that always returns its input argument.
    *
    * @param <T> the type of the input and output objects to the function
    * @return a function that always returns its input argument
    */
    static <T> Function<T, T> identity() {
    return t -> t;
    }
    xgfan
        10
    xgfan  
       2016-08-05 20:19:03 +08:00
    这个岂不是更加萌?
    twoyuan
        11
    twoyuan  
       2016-08-05 20:24:27 +08:00
    filter 的时候可以写成 Objects::isNull 看起来不是很爽嘛
    Shura
        12
    Shura  
       2016-08-05 20:26:27 +08:00 via Android   ❤️ 1
    楼主如果用过 lambda 表达式就知道了
    shyling
        13
    shyling  
       2016-08-05 20:36:33 +08:00   ❤️ 1
    ArrayList.stream.filter(Objects::isNull)
    wizardforcel
        14
    wizardforcel  
       2016-08-05 21:43:45 +08:00   ❤️ 2
    @twoyuan 太长了, o -> o == null 岂不是更加爽?
    ewBuyVmLZMZE
        15
    ewBuyVmLZMZE  
       2016-08-05 21:57:43 +08:00
    这个是用于函数式的,没有什么槽点,需要 用即可。
    shimanooo
        16
    shimanooo  
       2016-08-05 22:32:37 +08:00 via iPhone
    @wizardforcel
    id 函数 o -> o
    O2O 哈哈
    SoloCompany
        17
    SoloCompany  
       2016-08-05 23:01:30 +08:00 via iPhone
    kotlin 有 “ it ” 解决可读性问题, java 8 的话显然方法引用可读性更好
    NullMan
        18
    NullMan  
       2016-08-05 23:24:52 +08:00
    @wizardforcel 从便利性来说, 你这个更赞! 毕竟不是所有人都晓得这个函数; 从可读性来说, 还是 isNull 更赞!

    从我的角度来说, 还是你的最好.
    ooonme
        19
    ooonme  
       2016-08-06 00:32:49 +08:00 via iPhone
    scala: 什么函数式,一边玩去
    dreampursuer
        20
    dreampursuer  
       2016-08-06 12:39:14 +08:00
    groovy 更彻底
    baozijun
        21
    baozijun  
       2016-08-07 10:43:20 +08:00 via Android
    @ooonme 哈哈,不过 scala 也算是 java 系语言,毕竟都是 JVM 生态
    param
        22
    param  
       2016-08-26 09:30:50 +08:00
    我仿佛又听到有人在背后偷偷 @我
    ik1010
        23
    ik1010  
       2016-09-06 12:31:18 +08:00
    语义化用的吧,看来你没有用过 Guava
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1895 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:26 · PVG 00:26 · LAX 09:26 · JFK 12:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.