如何创建Java函数列表?
作者:互联网
我想从Java函数创建一个列表.但是,当我尝试将功能添加到功能列表时,它说:
Non-static variable cannot be referenced from a static context
我不知道哪种方法是静态的.有什么主意吗
我的主班:
public void createFunctionList() {
List<Function> functions = new ArrayList<>();
functions.add(Product::getInfo);
}
我的产品类别:
public class Product
{
public Info getInfo() {
return info;
}
}
解决方法:
可以将Product :: getInfo分配给Function< Product,Info> (由于它是一种非静态方法,因此可以将其视为接受Product实例并返回Info实例的函数).从更改功能声明
List<Function> functions = new ArrayList<>();
至
List<Function<Product,Info>> functions = new ArrayList<>();
编辑:我测试了您的代码,并且我得到一个不同的编译错误:
The type Product does not define getInfo(Object) that is applicable here.
您得到的编译错误具有误导性.
一旦做出建议的更改,错误就会消失.
标签:method-reference,java-8,java 来源: https://codeday.me/bug/20191109/2012214.html