– > < – 操作符是做什么的?

我最近遇到以下代码:

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);