возвращать правильные типизированные объекты при создании класса с использованием javapoet - PullRequest
0 голосов
/ 21 сентября 2018

Я работаю над процессором аннотаций и использую JavaPoet для генерации выходного класса из обработки, но я не могу найти способ заставить сгенерированный метод вернуть правильно типизированный объект.Например, вывод, который я хотел бы получить, выглядит примерно так ...

public static final Map<String, Object> getObjects() {
  return objects;
}

Однако я могу только заставить его сделать что-то вроде этого ...

public static final Map getObjects() {
  return objects;
}

IЯ использую метод return в MethodBuilder, но для него требуется правильный класс в качестве возвращаемого типа, так как же вы можете добавить модификаторы, подобные методу при его создании?Вот простая версия того, что у меня есть ...

MethodSpec.methodBuilder("getObjects")
    .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
    .returns(Map.class)
    .addStatement("return objects").build()

Я пытался искать везде и не могу найти ответ для такого рода вещей.Я знаю, что все Карты технически, но я бы хотел избежать чертовой неконтролируемой подсветки бросков в андроид студии, плюс это неправильно, потому что нет правильных типов при возврате метода.Это возможно, или я должен просто принять выделение и двигаться дальше?Спасибо.

1 Ответ

0 голосов
/ 22 сентября 2018

Что-то подобное должно работать:

.returns(ParameterizedTypeName.get(ClassName.get(Map.class),
                                   ClassName.get(String.class),
                                   ClassName.get(Object.class)))

Надеюсь, это поможет.

...