gpt4 book ai didi

Java:神秘的无效方法引用

转载 作者:行者123 更新时间:2023-11-30 02:01:46 29 4
gpt4 key购买 nike

对于 JDK 1.8.0_181 和 JDK 10.0.2,我收到此编译错误:

test\Account.java:[13,88] error: incompatible types: invalid method reference

对于此变量声明:

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());

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

仅供引用,我对反射(reflection)不感兴趣。

最佳答案

我的猜测是你的构造函数需要 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);

关于Java:神秘的无效方法引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52634141/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com