java – 如何创建方法引用列表?
作者:互联网
我需要处理一个列表,并为每个项目调用目标对象上的不同方法.看起来很优雅我可以创建一个方法引用列表来执行此操作,因此对于列表中的每个索引,我可以调用与其对应的适当方法引用.
private final static List<Consumer<String>> METHODS = (List<Consumer<String>>) Arrays.asList(
TargetClass::setValue1,
TargetClass::setValue2,
TargetClass::setValue3,
TargetClass::setValue4,
TargetClass::setValue5);
但是,Eclipse正在使用错误标记这些错误.此表达式的目标类型必须是功能接口.现在,TargetClass这里是一个普通的类,而不是一个接口…这是否意味着没有办法完成我在这里尝试做的事情?
解决方法:
您的方法引用可能与Consumer< String>不匹配.功能界面.
例如,此代码通过编译:
private final static List<Consumer<String>> METHODS = Arrays.asList(
Double::valueOf,
Integer::valueOf,
String::length);
由于您的方法似乎不是静态的,因此它们与Consumer< String>不匹配,因为这些方法有一个额外的隐式参数 – 该方法将应用于的实例.
您可以使用BiConsumer< TargetClass,String> :
private final static List<BiConsumer<TargetClass,String>> METHODS = Arrays.asList(
TargetClass::setValue1,
TargetClass::setValue2,
TargetClass::setValue3,
TargetClass::setValue4,
TargetClass::setValue5);
标签:method-reference,java,java-8 来源: https://codeday.me/bug/20190823/1702571.html