return 使用 javapoet 构建 class 时正确类型的对象

return proper typed objects when building a class using javapoet

我正在使用注释处理器并使用 JavaPoet 从处理中生成输出 class,但我似乎无法找到一种方法来生成正确类型的方法 return目的。例如,我想要的输出是这样的...

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

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

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

我在 MethodBuilder 中使用了 returns 方法,但是它需要一个合适的 class 作为 return 类型,所以你怎么能像方法一样添加修饰符正在建造? 这是我所拥有的一个简单版本...

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

我试过到处搜索,但找不到此类问题的答案。我知道所有地图在技术上都是如此,但我想避免在 android 工作室中出现该死的未经检查的演员表突出显示,而且在方法 return 上没有正确的类型感觉不对。这是可能的,还是我应该接受突出显示并继续前进?谢谢。

类似的东西应该可以工作:

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

希望对您有所帮助。