Java:神秘无效的方法引用



使用 JDK1.8.0_181 和 JDK 10.0.2 时,我收到以下编译错误:

test\Account.java:[13,88] 错误:不兼容的类型:无效的方法引用

对于此变量声明:

public final MetaProperty<Integer> BALANCE_PROP_INVALID = new MetaProperty<Integer>(Account::getBalance);

但是这个既编译又运行得很好:

public final MetaProperty<Integer> BALANCE_PROP_VALID = new MetaProperty<>(account -> ((Account) account).getBalance());

这是要点。有谁知道为什么这是无效的,希望是一种解决方法?

仅供参考,我对反思不感兴趣。

我的猜测是您的构造函数期望一个Function<Object, T>或类似的。它无法知道您打算使用帐户。 解决此问题的一种方法是使类具有两个泛型。

class MetaProperty<A, R> {
MetaProperty(Function<A, R> getter) { /* */ }
}
public static final MetaProperty<Account, Integer> BALANCE_PROP_INVALID 
= new MetaProperty<>(Account::getBalance);

相关内容

  • 没有找到相关文章

最新更新