– > < – 操作符是做什么的?
我最近遇到以下代码:
IntPredicate neg = x -> x <- x;
这是什么,某种反双拉姆达?
没有-> <-
操作符。 第一个->
就是Java 8中引入的lambda语法,第二个<-
是小于' <
和'unary minus'的误导连接。
你可以读为IntPredicate neg = (x) -> (x < (-x));
即它testingx
是否小于-x
,这是所有(好, 大多数 )负数的情况,因此名字为neg
。
IntPredicate neg = x -> x <- x; System.out.println(neg.test(4)); // false System.out.println(neg.test(0)); // false System.out.println(neg.test(-4)); // true
只是为了完整性:这个testing不仅(有意)难以理解,而且正如注释中指出的那样, Integer.MIN_VALUE
( ==-Integer.MIN_VALUE
)也失败了。 相反,你应该使用更简单的IntPredicate neg = x -> (x < 0);
。