编程语言
首页 > 编程语言> > 如何创建Java函数列表?

如何创建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