问题描述
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
将在这里帮助您