gpt4 book ai didi

javapoet - 如何用javapoet生成符号Class

转载 作者:行者123 更新时间:2023-12-04 13:31:05 26 4
gpt4 key购买 nike

我想生成这样的字段:

public static Map<String, Class<?>> ID_MAP = new HashMap<String, Class<?>>();

WildcardTypeName.subtypeOf(Object.class) 可以给 '?'
WildcardTypeName.subtypeOf(Class.class) 可以给 'Class'

最佳答案

如果您将该类型分解为其组成部分,您将得到:

  • ?
  • Class
  • Class<?>
  • String
  • Map
  • Map<String, Class<?>>

  • 然后,您可以使用 JavaPoet 的 API 以相同的方式构建这些组件部分:
  • TypeName wildcard = WildcardTypeName.subtypeOf(Object.class);
  • TypeName cls = ClassName.get(Class.class);
  • TypeName clsWildcard = ParameterizedTypeName.create(cls, wildcard);
  • TypeName string = ClassName.get(String.class);
  • TypeName map = ClassName.get(Map.class);
  • TypeName mapStringClass = ParameterizedTypeName.create(map, string, clsWildcard);

  • 一旦你有了那个类型,对 HashMap 做同样的事情应该很容易(只需将 Map.class 替换为 HashMap.class ),然后可以像往常一样构建该字段。
    FieldSpec.builder(mapStringClass, "ID_MAP")
    .addModifiers(PUBLIC, STATIC)
    .initializer("new $T()", hashMapStringClass)
    .build();

    关于javapoet - 如何用javapoet生成符号Class<?>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40509818/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com