跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Java 语法糖的探讨: 如何简化没有 else 的 if 语句写法
未分類
16 4 月 2021

Java 语法糖的探讨: 如何简化没有 else 的 if 语句写法

Java 语法糖的探讨: 如何简化没有 else 的 if 语句写法

資深大佬 : rizon 3

 //java 中 对于有返回值的语句是必须要赋值给一个对象的。 //也就是说   //这个语句是编译不过的 1==1;  // 这样通过短路的方式去简化 if 语句是不行的 1==2&&method();  //所以对于没有返回值的 if 语句只能老实的写成 if(1==2)   method();    //但是这样的话如果放到 lamda 表达式中就会让语句变得很复杂  //理想状态 1 list.foreach(val->1==2&&method(val));  //理想状态 2 这里的 void 表示没有任何操作,java 也不支持这种空操作 list.foreach(val->1==2?method(val)); list.foreach(val->1==2?method(val):void);  //现实 list.foreach(val->{ if(1==2)   method(val); });   

所以有什么更好的办法吗?

大佬有話說 (20)

  • 資深大佬 : abersheeran

    我觉得吧,你都用 Java 了就别想着玩花活了。这语言最大的工业优势就是你玩不出什么花活。能玩花火的,基本都被人说是重构火葬场了。

  • 資深大佬 : sylxjtu

    先转成 stream,filter 之后再 foreach

  • 資深大佬 : zydxn

    我觉得不在 foreach 里面用方法引用之类的就没必要用 foreach,正常写 for 循环就行了
    要么就是 stream().filter(predicate).forEach(this::method)

  • 資深大佬 : zhuweiyou

    .filter()
    .forEach()

  • 資深大佬 : beichenhpy

    直接写有啥弊端吗?
    语法糖不是为了优化才搞的嘛?

  • 資深大佬 : chendy

    filter + forEach
    不过就老老实实写个 for + if 也不难看啊(说不定效率还更高)……

  • 主 資深大佬 : rizon

    好吧 看来 java 就别想那么多花样了 哈哈

  • 資深大佬 : bthulu

    你可以写个静态方法
    public class Utils {
    public static <T, R> R ifTrueThenDo(boolean b, T params, Function<T, R> callback) {
    if (b) {
    return callback.apply(params);
    }
    return null;
    }
    }

    然后在别的类里引入:
    import static xxx.Utils.ifTrueThenDo;

    接下来你就可以一行语句完成你的这些功能了, 比如:
    ifTrueThenDo(1==2, val, (val) -> method(val))

  • 資深大佬 : jones2000

    代码能高效的解决问题不就行了. 其他的都不重要. 代码最后是编程成产品给客户用, 客户才不管你用什么语法,语言.

  • 資深大佬 : Kasumi20

    用 Kotlin,你可以完全不用写 if 语句

  • 資深大佬 : CrazyMonkeyV

    不知道 Java 行不行,字典了解下

  • 資深大佬 : yazinnnn

    我比较震惊 1==1;居然编译不过去

    虽然 java 的 stream 比较啰嗦晦涩,但是功能还是齐全的…
    你觉得不全的话可以用 kotlin 库提供的扩展方法

  • 資深大佬 : ychost

    我倒是希望 Java 能引入可选链,NullPointerException 太讨厌了

  • 資深大佬 : CantSee

    给他包装几层,包装的别人发现不了

  • 資深大佬 : baozijun

    @ychost #13 Option 应该可以满足

  • 資深大佬 : ychost

    @baozijun Optional 写起来有点不爽,还是习惯 ?. 这样的语法糖 或者 ?? 也可以

  • 資深大佬 : dallaslu

    这还要进一步简化吗?你省略了花括号,已经是离经叛道了好吗?

  • 資深大佬 : morimi2026

    如果一个语句能清晰表达意思,就不用简化。你举例的各种方式,哪怕 java 支持,都没直接用 if 来写表达得清晰

  • 資深大佬 : ScepterZ

    我觉得明显是先 filter 再 foreach 更好,在 foreach 里先做个判断这种写法后续容易忘记导致出错什么的
    先 filter 更符合正常思维

  • 資深大佬 : securityCoding

    业务多规则判断可以写成责任链

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具