Возвращать правильно типизированные объекты при создании класса с использованием javapoet
Я работаю над процессором аннотаций и использую JavaPoet для генерации выходного класса из обработки, но я не могу найти способ заставить сгенерированный метод вернуть правильно типизированный объект. Например, вывод, который я хотел бы получить, выглядит примерно так...
public static final Map<String, Object> getObjects() {
return objects;
}
Однако я могу заставить его сделать что-то вроде этого...
public static final Map getObjects() {
return objects;
}
Я использую метод return в MethodBuilder, но для него требуется правильный класс в качестве возвращаемого типа, так как же вы можете добавить модификаторы, подобные методу, по мере его создания? Вот простая версия того, что у меня есть...
MethodSpec.methodBuilder("getObjects")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(Map.class)
.addStatement("return objects").build()
Я пытался искать везде и не могу найти ответ на этот тип вещей. Я знаю, что все Карты технически, но я бы хотел избежать чёртовой неконтролируемой подсветки приведения в Android Studio, а также неправильно, что в возвращаемом методе нет правильных типов. Это возможно, или я должен просто принять выделение и двигаться дальше? Спасибо.
1 ответ
Нечто подобное должно работать:
.returns(ParameterizedTypeName.get(ClassName.get(Map.class),
ClassName.get(String.class),
ClassName.get(Object.class)))
Надеюсь, это поможет.