找不到书面方法的符号 java.util.function

Cannot find symbol of written method java.util.function

我有这样的代码

public class Functionz {
    public static boolean test() {
        return true;
    }

    public static void main(String[] args) {
        Function[] funcs = new Function[] {test}; // and others
        for (Function func : funcs) {
            func();
        }
    }
}

我的错误是:cannot find symbol: test 在函数数组声明的那一行。

希望这不是一个愚蠢的问题,对 java 来说是个新问题,对 python 和 C++ 这样的面向对象语言来说不是新问题。

Java中的一个Function确实接受一个参数作为输入和一个作为输出。
您可以这样声明参数的类型:Function<Integer, String> 是一个将 Integer 转换为 String
的函数 您的方法 test() 不接受任何输入值并输出 boolean 所以它是 Supplier.

import java.util.function.Supplier;

public class Main {
    public static boolean test() {
        System.out.println("lorem ipsum");
        return true;
    }

    public static void main(String[] args) {
        Supplier[] funcs = new Supplier[] {Main::test}; // and others
        for (Supplier func : funcs) {
            func.get();
        }
    }
}

如果测试需要一个(且只有一个参数),如

,您的代码将编译通过
import java.util.function.Function;

public class Main {
    public static boolean test(String str) {
        System.out.println(str);
        return true;
    }

    public static void main(String[] args) {
        Function[] funcs = new Function[] {(Object anyObject) -> test(anyObject.toString())}; // and others
        for (Function func : funcs) {
            func.apply("lorem ipsum");
        }
    }
}

这是list of those types
请注意,Function 不会在构造中键入其参数,因为 you can't create arrays with generic type in Java(您可能会针对特定用例)=> 使用 List 会在这里帮助您