
android 或者 java 玩过 Annotation Processing Tool 能帮我看看这个问题吗?
JCIdent paramType = mTreeMaker.Ident(getName("String")); JCArrayTypeTree paramArray = mTreeMaker.TypeArray(paramType); JCVariableDecl paramDecl = mTreeMaker.VarDef(mTreeMaker.Modifiers(Flags.PARAMETER), getName("args"), paramArray, null); return List.from(new JCVariableDecl[]{paramDecl}); 如上代码可以构造出一个 方法的参数即String[] args。
我想构造这样一个方法query(@Tag(name="user")User user),方法参数里的注解就不知道该怎么构造了
JCTree.JCIdent paramType =treeMaker.Ident(names.fromString("com.test.annotations.Tag")); JCTree.JCAssign jcAssign=treeMaker.Assign(treeMaker.Ident(names.fromString("value")), treeMaker.Ident(names.fromString("\"user\""))); JCTree.JCAnnotation jcAnnotation = treeMaker.Annotation(paramType, List.of(jcAssign)); 用上面构造的jcAnnotation去进一步构造JCVariableDecl,可是最终编译器告诉我:找不到符号:com.test.annotations.Tag
1 BigDogWang 2018 年 8 月 11 日 via iPhone 请问你有 jctree 的 api 说明嘛?我找了好久不知道应该怎么操作 jctree |
2 twogoods OP @BigDogWang 我也不知道,当初都是摸着石头过河,这一块的内容是不多见 |
3 lld6 2020 年 4 月 26 日 楼主解决了吗?我也碰到这个问题了。。。 |
4 twogoods OP @lld6 #3 我差不多已经忘记了.....直接从 0 开始构造可能会有问题,我后来是在代码上写一个这样的注解,编译去读然后尝试把这个注解结构放在其他的地方。 我代码里 org.apache.ibatis.annotations.Param 这个注解手动在代码里写了一下 https://github.com/twogoods/TgDao/blob/3245309d6f/tgdao-core/src/main/java/com/tg/dao/annotation/Params.java#L16 https://github.com/twogoods/TgDao/blob/3245309d6f52d32d1ff5ce2ca6c64132caf0f398/tgdao-core/src/main/java/com/tg/dao/processor/ParamCodeGenerateProcessor.java#L111 |