找不到书面方法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将在这里帮助您

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...