代码之家  ›  专栏  ›  技术社区  ›  Neglected Sanity

使用javapoet构建类时返回正确类型的对象

  •  2
  • Neglected Sanity  · 技术社区  · 6 年前

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

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

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

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

    我在MethodBuilder中使用returns方法,但是它需要一个合适的类作为返回类型,所以如何在方法被构建时添加修饰符呢?

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

    我试过到处找,但找不到这类事情的答案。我知道所有的地图在技术上都是正确的,但我想避免在androidstudio中使用该死的未检查的cast突出显示,另外在方法返回上没有正确的类型感觉是错误的。这是可能的,还是我应该接受突出显示并继续?非常感谢。

    1 回复  |  直到 6 年前
        1
  •  3
  •   El Hoss    6 年前

    类似的方法应该有用:

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

    希望有帮助。

    推荐文章