如何创建Java函数列表?

时间:2018-03-20 10:29:36

标签: java java-8 method-reference

我想从Java public static class MyExtensions { public static IQueryable<T> MyContains<T, TFilter>( this IQueryable<T> list, TFilter x, Expression<Func<T, bool>> filterFunc) { if (x == null) { return list; } return list.Where(filterFunc); } } 创建一个列表。但是当我尝试将一个函数添加到var emailAddresses = _yRepository .Find() .MyContains(x, y => x.ys.Contains(y)) .ToArray(); 列表时,它会说;

Function

我不知道哪种方法是静态的。有什么想法吗?

我的主要课程:

functions

我的产品类:

Non-static variable cannot be referenced from a static context

1 个答案:

答案 0 :(得分:3)

Product::getInfo可以分配给Function<Product,Info>(因为它是非静态方法,所以它可以看作是一个带Product实例并返回{{1}的函数实例)。从

更改Info的声明
functions

List<Function> functions = new ArrayList<>();

编辑:我测试了你的代码,我得到了一个不同的编译错误:

  

Product类型未定义此处适用的getInfo(Object)。

您获得的编译错误具有误导性。 一旦我做出建议的更改,错误就会消失。