Java in 运算符

标签 java syntactic-sugar jls in-operator

第一百万次,我希望在 Java 中使用 IN 运算符,类似于 SQL 中的 IN 运算符。它可以作为编译器语法糖来实现。所以这个

if (value in (a, b, c)) {
}
else if (value in (d, e)) {
}

...真的很棒。事实上,上面的结构和这里相当冗长(并且不适合原语)的结构是一样的:

if (Arrays.asList(a, b, c).contains(value)) {
}
else if (Arrays.asList(d, e).contains(value)) {
}

对于 intlong 和类似类型也可以这样:

switch (value) {
  case a:
  case b:
  case c:
    // ..
    break;

  case d:
  case e:
    // ..
    break;
 }

或许还有更高效的实现方式。

问题:

这样的东西会成为 Java 8 的一部分吗?如果没有,我怎么能提出这样的建议?或者我现在可以使用任何等效的构造吗?

最佳答案

你可以写一个辅助方法来做。

public static <T> boolean isIn(T t, T... ts) {
    for(T t2: ts) 
      if (t.equals(t2)) return true;
    return false;
}

// later
if (isIn(value, a,b,c)) {

} else if (isIn(value, d,e)) {

}

关于Java in 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7390571/

相关文章:

java - JNI 构建 gradle 无法找到 ndk 目录

layout - Haskell 记录语法

c# - 如果 with 关键字不好(对于 C#),这是一个不错的选择吗?

javascript - 我可以在 es6 数组解构中使用什么作为占位符?

java - JLS语法如何匹配简单的字段访问(obj.f)?

java - 为什么足够的同步边集是唯一的以及如何构建它?

java - HFS+ 文件系统上 Java 类名称中的非 ASCII 字符

java - pdfbox,提取文本时cpu 100%

java - 为什么只有在使用 count() 函数时才执行 map() 函数内的表达式?

java - Tomcat DataSourceRealm 只工作一次