我正在尝试使用番石榴来创建一个可比较的对象,其中我只关心类的单个字段(由集合用于排序)。该字段是通用的,可以采用任何类型。我正在使用 guava 的 Ordering#onResultOf 方法将包装对象转换为泛型类型,并为该类型提供可比较的类型。
我有以下代码:
private static final class Reference<T> { ... }
...
public static <T> Function<Reference<T>, T> referenceToData() {
return (Function<Reference<T>, T>) ToData.INSTANCE;
}
private enum ToData implements Function<Reference<Object>, Object> {
INSTANCE;
@Override
public Object apply(final ComparatorMerger.Reference<Object> input) {
return input.data;
}
}
当我编译代码时,我收到以下错误:
[ERROR] ... inconvertible types
[ERROR] found : Reference.ToData
[ERROR] required: com.google.common.base.Function<Reference<T>,T>
我不确定如何让演员按我想要的方式工作。有什么建议吗?