Java有一个`::`运算符吗?

时间:2013-12-13 09:33:14

标签: java

Java是否有::运算符?请不要关闭这个问题,我确实搜索了文档,我确信它没有,但我想完全确定。

我可以在Java中使用MyClass::x或任何在视觉上类似于的内容。

4 个答案:

答案 0 :(得分:8)

在Java 8中,引入了运算符::作为引用方法的方法。基本上,它将方法转换为第一类对象,您可以将其作为参数传递给其他方法,存储在变量中,然后从方法返回。

这种语法的增加是Java 8引入的功能编程范例整体方向的一部分.FP的基本特征是高阶函数 - 接受这样的函数其他函数作为参数或返回函数。这种范例允许人们消除现在遍布Java源代码的大量样板。

答案 1 :(得分:5)

直到并包括Java 7:否!

Java 8:是的!

就是这样。

答案 2 :(得分:0)

在Java 8中,它允许引用类的静态成员,类似于PHP。

public class YourClass {

    public static int comparer(String one, String two){
        return one.length() - two.length();
    }

    public static void main(String[] args) {
        Arrays.sort(args, YourClass::comparer);
        //args are now sorted
    } 

}

如评论中所述,这仅是Java 8(及更高版本)。 JDK 7及以下版本没有这个。

答案 3 :(得分:-1)

Upto Java 7在java中没有像C ++中那样的双冒号运算符(::)。 但Java 8引入了双冒号运算符,用于引用方法。

示例(静态方法)

public class TestClass {

    public void functionTest() {...}

}

我们可以使用双冒号运算符(::)来调用函数'functionTest()'。

TestClass t=new TestClass();
t::functionTest

如果'functionTest()'是静态的,那么我们可以使用类名

直接引用
TestClass::functionTest

有四种方法引用(如java doc中所述)

有关更多信息,请参阅java doc