我一直想知道为什么 java 没有在 SQL/PL-SQL 中使用的任何关键字,如“IN”。这是一个非常有用的关键字,有助于一次将值与其他几个值进行比较,而不是用 || 编写丑陋的代码。或冗长的 if-else!JSR 中有这样的命题吗?
PS:我不是在寻找解决方法,但我想知道是否有任何特殊原因导致此功能在 java 中不存在或在不久的将来有任何建议
我一直想知道为什么 java 没有在 SQL/PL-SQL 中使用的任何关键字,如“IN”。这是一个非常有用的关键字,有助于一次将值与其他几个值进行比较,而不是用 || 编写丑陋的代码。或冗长的 if-else!JSR 中有这样的命题吗?
PS:我不是在寻找解决方法,但我想知道是否有任何特殊原因导致此功能在 java 中不存在或在不久的将来有任何建议
我还没有看到任何将其添加到 Java 的坚定建议。有一篇博客文章(和另一篇文章)讨论了添加列表文字的可能性,这将使您在大多数情况下使用contains()
- 这似乎已经针对 Java 7 进行了讨论,但没有被采用。
更新:看起来列表文字已被推迟到 Java 8 - 例如,请参阅这篇文章。
您可以使用 varargs 定义帮助程序,而不是使用contains()
和直接使用数组文字或列表:
boolean in(Object o, Object... vals)
{
return Arrays.asList(vals).contains(o);
}
这样你就可以做到:
if (in(x, "a", "b", "c"))
{
// Do something
}
IN
但与 SQL或 Python相比,这仍然有点丑陋和冗长:
if x in ['a','b','c']:
print "yes"
我会做类似的事情,
List<String> values = ArrayLists.create("AVALUE", "BVALUE");
if (values.contains(yourValue))
// Do whatever
但是Java可以很容易地连接到数据库(JDBC)。您确实有一个for-each构造,尽管它很有帮助并且类似于IN
:
for (Suit suit : suits)
for (Rank rank : ranks)
sortedDeck.add(new Card(suit, rank));
在 Java 中,您可以创建一个集合并使用方法boolean contains(Object o)
。
我认同,
这确实是一个缺失的功能。
例如:
String[] list = new String[]{"Tim","Tammy","Tod"};
if("Ted" in list){
System.out.println("Found!");
}
真的很容易理解。
java.util.Collection
有方法contains
,containsAll
可以完成工作,但很难从你的问题中分辨出来。