引用特定类型的任意对象的实例方法...不使用自定义类?

时间:2014-12-07 15:17:53

标签: java java-8

根据“方法参考”的文档,可以创建:

  

引用特定类型的任意对象的实例方法

链接:https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html

我写了以下代码:

public class App {

    public static void main(String[] args) {

        Function<String, String> f1 = String::toString;

        Function<String, String> f2 = App::toString; // Compilation error
    }

    public String toString() {
        return "test";
    }
}

然而,使用类“String”的“方法引用”编译得很好,而使用我自己的App类的相同“方法引用”编译不正确。

有人能说出原因吗?

3 个答案:

答案 0 :(得分:2)

对于类方法引用,第一个Function类型参数是类的类型,第二个是函数的返回类型。尝试:

Function<App, String> f2 = App::toString;

答案 1 :(得分:1)

应为Function<App, String> f2

答案 2 :(得分:0)

我认为你要找的是Function<App, String> f2