Я пытаюсь использовать guava для создания сопоставимого места, где мне нужно только одно поле класса (используется коллекцией для сортировки). Это поле является общим и может принимать любой тип. Я использую метод упорядочения # onResultOf от guava для преобразования объекта-оболочки в общий тип и предоставляет сопоставимые для этого типа.Java generics и литье общего типа
У меня есть следующий код:
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>
Я не уверен, как получить отливку, чтобы работать так, как я хочу это к. Любой совет?
в моих OCPJ6P исследований, единственный пункт, который получил меня путают перемешивает между дженериков и статики, я не понял эту точку но в конце концов я понял, что Generics не может быть смешан со статическими (методы или переменные), поскольку статика присутствует в памяти до времени компиляции, а Generics зависят от времени компиляции, попробуйте этот код в нестационарном коде –
@ EL-conteDe-monteTereBentikh Это не понадобится - см. Мой ответ. –