【问题标题】:return proper typed objects when building a class using javapoet使用 javapoet 构建类时返回正确的类型对象
【发布时间】:2018-09-24 17:46:20
【问题描述】:

我正在开发注解处理器并使用 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 中突出显示未经检查的强制转换,而且在方法返回时没有正确的类型感觉是错误的。这是可能的,还是我应该接受突出显示并继续前进?谢谢。

【问题讨论】:

    标签: java annotations javapoet


    【解决方案1】:

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

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

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-10-26
      • 2020-02-03
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      相关资源
      最近更新 更多