对于百万分之一的时间,我希望使用INJava中的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)) { }
或针对int,long和类似的类型:
int
long
switch (value) { case a: case b: case c: // .. break; case d: case e: // .. break; }
也许会有更有效的实现。
这样的东西会成为Java 8的一部分吗?如果没有,我该如何提出建议?还是我现在可以使用任何等效的构造?
使用op4j:
Op.onListFor(a,b,c).get().contains(value);
使用相同的方法,你可以创建一个辅助类Is用的方法in:
Is
in
class Is<T> { private T value; public Is( T value ) { this.value = value; } public boolean in( T... set ) { for( T item : set ) { if( value.equals( item ) ) { return true; } } return false; } public static <T> Is<T> is( T value ) { return new Is<T>( value ); } }
使用静态导入,您可以编写:
if(is(value).in(a,b,c)) { }