2

我正在开发注释处理器并使用 JavaPoet 从处理中生成输出类,但我似乎无法找到一种方法让生成的方法返回正确类型的对象。例如,我想要的输出是这样的......

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

但是我只能让它做这样的事情......

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

我在 MethodBuilder 中使用返回方法,但它需要一个适当的类作为返回类型,那么如何在构建方法时添加修饰符?这是我所拥有的简单版本...

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

我试过到处搜索,但找不到这类事情的答案。我知道所有的地图都是技术上的,但我想避免在 android studio 中突出显示未经检查的强制转换,而且在方法返回时没有正确的类型感觉是错误的。这是可能的,还是我应该接受突出显示并继续前进?谢谢你。

4

1 回答 1

3

像这样的东西应该工作:

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

希望有帮助。

于 2018-09-22T20:26:22.337 回答