关于此错误,有很多问题,但找不到针对这种特殊情况的答案。有了这个界面:
interface Converter<IN, OUT> {
OUT convert(IN in);
}
这种方法:
public Converter<?, String> converter(java.lang.reflect.Type type) {
if (type == UUID.class) {
return <X>;
}
}
在X上使用UUID::toString
时,出现“无法引用”错误。但是使用Object::toString
,我不会。这是在IntelliJ IDEA 2018.2.1中。
我想问题是,Object::toString
为什么起作用?那也不带参数,那么它如何实现带参数的接口方法呢?
[edit]我发现这可行:
public Converter<UUID, String> converter(java.lang.reflect.Type type) {
return UUID::toString;
}
是的,这与类型推断有关。在那种情况下,“非静态方法”消息可能有点像鲱鱼吗?